Multi-platform REST Client

Prototype multi-platform app to manipulate and display spreadsheets including embedded charts on multiple platforms using single code base.  Data obtained from REST servers via JSON and using Aspose Cloud to render the spreadsheet for display.

Development platform: Delphi 10 Seattle using FireMonkey.

Target platforms:  Android, iOS, OSX, Windows.

Log Analysis

Analysis of operation log files.  Identify trending system faults across the fleet and worst performing locomotives.  Make recommendations for immediate actions and future maintenance.

SARMA – Secure Australasia Returns Management Application

A comprehensive application to manage generation of RMAs (Returned Materials Authority), the receiving of damaged/failed meters into the warehouse, repairs and refurbishment in the workshop and despatching meters back to customers.  The client had a very basic in-house developed application to record the repairs and refurbishment aspect using TCL running on PostgreSQL.  The project covered all aspects of phases of software development.  From initial discussions as to what to do with the in-house application, requirement specification, design, coding testing, training, deployment.  Soon after deployment, the client requested the system be migrated from PostgreSQL to MS-SQL Server at the request of their IT department.

Meeteorite Outlook Plugin

This C# project was a proof-of-concept to interface the cloud based Meeeteorite DART meeting facilitation system with Outlook. Bookings made in Outlook could be flagged as DART meetings and the plugin would opload the meeting details including all the attendees. Any further changes to the Outlook meeting are automatically updated to the cloud.

Property Management

This was a project more about data manipulation than software development.

A local real estate agent was using a commercial application for tracking rental lease payments and had a separate home brewed Access database for managing late payers, task checklists and history of maintenance performed on a property.  They also had a few other spreadsheets around the office for other information relating to the management of the same rental properties.  This mess required at least double or triple data entry and resulted in many inconsistencies that inevitably come from redundant data entry and storage.

The software part of the project was fairly simple:

  • rationalise the “spaghetti” data structures in the Access database and spreadsheets without changing the user interface too much;
  • set up automatic importing of the data from the commercial application;
  • set up Word templates for automatic letter generation from the Access application;
  • construct reports to replace the various spreadsheets.

The hard part was when it came time to switch over to using the new system.  The data had to be merged from the three inconsistent sources without losing any history while still allowing the office to operate.  Lots of experience gained with SQL queries.

Transport Directions Database

Fraser’s Livestock Transport operate in the remote regions of western Queensland where there are no maps.  Each customer might have several pick-up or delivery locations on a property.  They had an Excel spreadsheet with customer name, property/location name, and text directions of how to get there.  Built up over the years it was getting a bit cumbersome to search the thousands of entries and print a single page for the driver.

Digressoft turned the spreadsheet into an Access database with an easily searchable/filterable list of customer and property names.  Clicking on the target location alows the operator to see and/or print the full detailed directions for a driver.

WESTECT II

Now that the second incarnation of WESTECT ATP is complete, I can return to my “normal” life.

Almost 7 years ago, Digressoft was asked by the head of Invensys Rail Australia (previously Westinghouse Rail Systems Australia) R&D to perform a feasibility study into a new generation of WESTECT.  Several components of the current hardware were approaching obsolescence (a common hazard in high tech yet inherently conservative safety critical systems).  After 2 years of report writing, platform investigation, estimating and client negotiations a contract was awarded to Invensys Rail for the development of WESTECT II.  This time I was to perform more of a System Engineer / Technical Consultant role than the Software Engineering services supplied for the first WESTECT development project.

Activities performed for this project included:

  • Requirements capture using DOORS and Synergy.
  • Production of Requirement Specifications for several sub-systems to be developed by external suppliers.
  • Negotiation and selection of external suppliers.
  • Detailed design of on-board track map structures and assisting in the development of a stopping distance prediction algorithm using full train mass-distribution over changing gradients.
  • Design of Safety Critical Data Preparation Sub-system.
  • Complete development life cycle of Portable Transponder Reader Module using C# on the Windows CE platform.
  • Complete development life cycle of Portable Radio Monitor using Delphi.

 

RepRap

Friends decided to dip their toe into the 3D printing revolution by putting together a RepRap open source (both hardware and software) device.  Being hardware technicians, they became a little lost when the software didn’t behave as expected.  I helped out in my spare time making modifications to both the Arduino firmware on the actual RepRap printer device and the driver software on linux.  After a few months of experimentation and debugging of both hardware and software issues, they are now reliably printing many objects.  Soon they will print all the parts needed to build another printer so I can join in the fun.

OTIS

Overload Transport Industries Scheduler is a system for a transport brokerage company.

Phone operators take requests for trucks and drivers required at short notice by large courier companies and arrange for someone from their list of owner/drivers to fill the job.

OTIS presents a daily list of all of their known driver’s and their current job assignments.  It keeps track of hours spent and distance traveled for jobs and monthly pay statements for the drivers and invoices for the courier companies are produced.

TemPIC

This is another of those fun projects done with friends.

A friend came into possession of a box full large (200mm) 4 digit 7-segment displays with a PIC processor to drive them.  After some discussion we decided to make wall thermometers out of them.  He attached a button and a temperature sensor and I threw together some code and we had something to display current, maximum, minimum and average temperature which could be seen anywhere in the room.  Christmas presents sorted!

Real Estate

One of the local real estate agents had enough technical knowledge to tinker away at a Microsoft Access database to keep track of properties he had on the market.  However, he soon realised his limitations and called in Digressoft to clean up the mess and add all the features he wanted but didn’t know how to go about implementing.

The sort of feature added included:

  • Store pictures of the property and present them and other pertinent information to various Word templates for automatic generation of window cards, news paper adverts, listings for prospective buyers etc.
  • Keep track of tasks required to be performed by agents and administration staff during the sale and transfer of a property.
  • Generate required letters through Word templates.

MOHS

Mallet’s Occupational Health and Safety forms was an ambitious project for a small company of heavy machinery operators.

They wanted to automate all their paper work.  Each machine needed daily inspection with a couple of pages of checklists to be filled in.  While that wasn’t too difficult, collecting and filing them before they got lost was proving more difficult when machines and operators might be out in remote locations on the same jobs for days or weeks at a time and then move straight onto other jobs.  The company wanted to have a laptop with every machine which would present the operator with the appropriate checklist at the start of each shift and store the results until next time it communicate with the main office computer network.

Digressoft developed a flexible, easy to use forms application and was in the process of implementing the main office database update procedures when the company ran into staffing problems and ended up going out of business.

MESH

MESH is a job estimating system for an iron foundry.

When Digressoft was approached for this job, the client already had many hundreds of job estimations each one in its own Excel spreadsheet.  These were quite complex spreadsheets containing over two hundreds cells to reach a bottom line for the job.

They were happy to keep the spreadsheets for the actual estimation but were having real problems browsing and maintaining the hundreds of files.

Digressoft built an MS Access application which harvested pertinent information from each spreadsheet and presented a summary list of all the jobs.  The list could easily be sorted and filtered and a simple double-click would open the spreadsheet  containing the actual detailed estimate.  The application also provided other buttons for easy maintenance of estimations allowing the sales staff to open, create new, copy existing, print and delete jobs without having to go near Windows Explorer.

Instrument Panel

The motorcycle instrument panel has finally been fitted to a motorcycle!

This project was done “for the fun of it”.  I has taken a couple of years but all done “in our spare time”.  A friend designed and built the hardware to my specification and I developed the software.  The panel consists of two rows of LEDs, one for speedometer and one for tachometer, and a alpha-numeric display for all the other functions.

The display has three basic modes:

  1. Road Riding.  In normal riding mode, the display presents speed, time, ambient temperature, odometer, trip distance, daily distance and distance left in the fuel tank as well as the “normal idiot lights” for engine temperature, battery voltage, blinker operation, high-beam and neutral.
  2. Track Riding. In this mode the only “normal” information displayed are the alarms for engine over temperature and low battery voltage.  The rest of the panel displays number of lap completed, current lap time, last lap time and best lap time.
  3. Browsing.  When the bike is resting on its sidestand menus can be browsed using the indicator, horn and high beam button to access a myriad of information.  Full trip history (distance, time, average and maximum speed), lap times for each track riding session, service intervals, setup of date and time etc.

 

Presto

This application was developed for a company manufacturing and fitting window dressings.  They needed a quotation system which sales staff produce quotations on-site at a customer’s residence.

The client had a very specific idea of how he wanted the application to look.  He wanted it driven by a Word template which looked like an order form.  The user fills in customer details at the top and then for each window, they enter the size, select the product and the software fills in the price.  This is simple enough from the user’s perspective.

Their existing paper based product catalogue and price list consisted of two  A4 lever arch folders each about 4cms thick.  Each product has different numbers of options and materials with each combination having a different lookup table.  Drapes were different again with a complex spreadsheet to calculate a price depending on material price, width and various other options.

JBug11

During development of the motorcycle instrument panel, a remote debugger for the Motorola 6811 micro-processor was needed.  As this was a fun project, I didn’t want to spend heaps of money on fancy tools.  A web search turned up an open source Window based debugger based on Motorola’s monitor protocol.  I need to make a few modes to get it working and improve the usability.  The mods were fed back to the author but I don’t think he was actively maintaining by that stage.

WESTECT (continued)

Well old projects need maintaining.

I have been returning to Westinghouse Rail System from time-to-time over the last 7 years as a part time consultant to investigate and assist the small remaining team to repair defects in the WESTECT ATP system.

During that time there was one major upgrade to integrate the on-board sub-system to the Queensland Rail developed Direct Traffic Control (DTC) Driver’s Workstation.  DTC is a safe working system for use in territories without a conventional track-side signaling system.

 

Stock Doctor

Stock Doctor is an existing application which analyses stock prices and keeps a history of a portfolio.  It is sold through a subscription system where the customer’s database is updated regularly with latest prices and expert comments and tips.  It was being supplied on CD but the owners wished to take advantage of the new availability of the internet to deliver information cheaper and more timely.  Digressoft was commissioned to make that happen.  The database was too large to send every time so I hunted around and found Make Update, an open source software patching tool.  With a few improvements and bugfixes it became the basis of auto updating software and database.  My fixes were returned to the author and became the basis of the next release of Make Update.

WorkForce Pay Rate Calculator

A local employment agency specialises in the management of apprenticeships.  For a small fee, they handle all the government paper work, apply for and collect any applicable incentives, pay tuition fees, etc.  A perspective employee just wants to know the bottom line monthly wage for each year of the year of the apprentice ship.

This calculator presents all the relevant bonuses and costs and then the monthly cost for each year of the apprenticeship.

Flikker

Flikker is a light weight application for viewing image files via a tree structure index.  The description of the image files and the structure is contained in a simple text file allowing it to be edited by any text editor.

It was originally commissioned by Macbeth Genealogical Services Pty Ltd. to be the viewer for CDs full of scans of original documents useful for genealogical searchers.  It has now been used for at least 7 CD from Macbeths as well as CD containing a scan of a popular motorcycle parts catalogue.

Estimating And Tracking System

E.A.T.S. was initially developed for a steel fabrication company to streamline their job estimating process and produce quotations ready to send to the customer.  The costs of resources used in the manufacturing process are recorded so that the accuracy of estimations can be tracked.  It also interfaces with the Mind Your Own Business (M.Y.O.B.) accounting system to automate invoicing and purchase ordering.  E.A.T.S. was further refined to make it applicable to any small enterprise which provides quotations for “one-off” manufacturing jobs. 

WebOrders

A very early web shopping cart!

WebOrders is a Windows application that received orders for software via email generated from web pages.  It checked each order and then presented the details to a user who could then either accept or reject the order.  If the order was rejected a reply email was automatically generated containing the reason.  If the order was accepted and credit card payment was authorised, an email containing an ID and password enabling downloading of software was generated.  The system also generated transaction summaries in the required format for payment clearing authorities (e.g. Visa, AMEX), completely automating order processing.

Self education

Whilst taking time out from active paid work to raise my new son while my wife finished off being part of a major hospital redesign and rebuild project I taught myself Java and PHP for the fun of it.

Service Desk system

This application developed in MS Access for a electronic game manufacturing company is for their Service Desk operators.  With it, operators log phone calls and assigns tasks for technicians to follow up on the reported problems.  There are also management reports for checking average length of call, number of calls for a particular game product, average length of time for follow up, etc.

EPROM Programmer

This project was again for a budget conscious client.  Digressoft constructed the hardware from an Elector magazine kit and developed a program that ran on a PC to drive the programmer hardware.

Multi-Warehouse Inventory Management System

Digressoft was commissioned to develop an inventory management system to replace MISys used by an electronics manufacturing business.  They found the MISys user interface very awkward and the system could not handle the way they kept stock in multiple locations and they could not find a better existing inventory management system.  Digressoft analyzed their requirements and produced a prototype system for user interface testing.  The user interface was tweaked until everybody was happy with the system. Unfortunately the business ran into financial difficulty and the project had to be abandoned.

Distortion-Oriented Displays

Interacting with Distortion-Oriented Displays
Presented at Singapore Conference on Human Computer Interaction by co-author Ying Leung.

A study into novel ways to present a large map of information on a normal display where both the entire global picture and local detail can be seen at the same time.  It objectively compared navigation speed of several methods through a large graphical object hierarchy map.  The best performing was a new approach using a trapezoidal shaped lens.

Master of Information Technology

Finished my year long Master of Information Technology course at Swinburne University of Technology.

Dual Major:

  • Software Engineering (Distinction)
  • Human Computer Interaction (High Distinction)

Did some really cool stuff:

  • used C++ a lot,
  • learnt all about Design Patterns by studying the Gamma et al text,
  • did a couple of projects using object databases using Objective C as an alternative to SQL,
  • conducted Human Computer Interaction workshop to study how effective a user interface works.

Topped the class in two of the subjects!

Full transcript of results are available on request.

Computer Network Hardware/Software/User Register

This was a low-cost development for a very budget conscious, computer literate client.  Digressoft did the initial database design in Access and discussed the user interface design with the client who then did most of the work to put together the system.  We then came back and did the tidy up work and the tricky bits and the small amount of code necessary to finish of the project.

Automatic Train Protection

After five years WESTECT goes live and it is time for me to go back and do some more study!

WESTECT, produced by Westinghouse Rail System Australia, is one of the first continuous Automatic Train Protection (ATP) systems in the world.  Designed in conjunction with and for Queensland Rail for their main coastal route.  ATP systems in general monitor train movements and speed and will cut power and/or apply brake to ensure that the train does not violate current and future speed restriction or exceed Limits Of Authority (red lights etc.).  The continuous part of WESTECT means that the on-board part of the system is continuously updated as to the state of upcoming signals allowing it to react immediately to signal changes.

I have been involved with WESTECT from the outset:

  • assisting with requirements capture using the Yourdon structured methodology.
  • Developing a “Driver’s Simulator” (using C on DOS) to prototype the system and find tune the driver’s interface.
  • Designing the overall architecture of the on-board sub-system.
  • Designing, implementing (using Ada) and unit testing two of the core on-board software modules.
  • Getting the Ada run time Board Support Package up and running on propriety hardware including the safety critical fail safe aspects (lots of assembler work).
  • Integration testing (getting all the on-board modules working on the proprietry hardware).
  • Overall debugging (getting the complete system working once it was installed on the rail network.

All development was done to the British Rail standards for Safety Integrity Level (SIL) 3 systems.

This was a fairly large project in a medium sized company and I was one of the original members of the project team.  I remained on the technical side of the project leading the on-board team (there was about 15 members in the team at its peak).

Midas

Midas was Digressoft’s first independent project.

It is a small Client/Consultant booking system developed using Microsoft Access used by receptionists to book consultant’s time to visit the client.  It also keeps track of payments and has reports booking summaries for the consultants, unpaid client accounts, etc.

Commercial Applications on the “New IBM PC”

After 5 years working as an Analyst/C Programmer for Pancom Systems Pty Ltd.  I have decided it is time to move onto something more physical.

In that time projects included:

  • Development of a cashbook accounting system to run under both CPM and PC-DOS.
  • Modification of an existing client/product management application and underlying database management system to add multi-user capabilities.
  • Team leader for a significant upgrade of a client/product management application (including design and implementation of a high level database management system interface as well as several application modules).
  • Evaluation of third party database development systems.
  • Development of a prototype SQL based version of the client/product application.

Work here was fun in a small close knit team with just four or five programmers cutting C code, putting together useful libraries as needed and pumping out applications as well.

Some really amazing code was produced: we had a full multi-user, variable length data record, btree indexed database system implemented way before these things were available commercially at the PC level.

Debugging was only available at the assembler level via a command line debugger and at times required getting quite intermate with the BIOS.

We had one of the first token ring network systems up and running in Australia.

We developed our own programmers editor as there was nothing useful available on DOS – this ended up turning into ED for Windows – still widely used by programmers the world over.

We also built our own comms program based on the Y protocol so we could send applications interstate nightly for testing – long before the internet made this common place and Continuous Testing became a legitamate development strategy.

Games

Three years working in the games industry – now it is time for a “real job”!

Projects completed for Beam Software Pty Ltd (Melbourne House) :

  • Writing BASIC games, educational and utility programs for inclusion in do-it-yourself and teach-yourself-programming books.
  • Writing books, Dragon BASIC for the Absolute Beginner and Dragon Machine Language for the Absolute Beginner.
  • Development of arcade style games in assembler language for home computers.
  • Design of a graphical sprite script system allowing easier and faster game development.

Bachelor Applied Science (Computer Science)

Finished my Bachelor Applied Science (Computer Science) at Royal Melbourne Institute of Technology (RMIT)

Majored in Software Engineering with a High Distinction at the end of it.

Course was very wide ranging covering topics such as:

  • Accounting/Business Systems
  • Basic digital electronics, logic circuits, microprocessors interfacing
  • Programming (Pascal, COBOL, Fortran)
  • Systems Analysis
  • Advanced Mathematics
  • Database systems
  • Operating Systems
  • Artificial Intelligence
  • Data Communications
  • Compiler Theory
  • Office Automation Systems
  • Software Engineering

Full transcript of results are available on request.

bespoke software