Office Functionality for Programmers

There are a wide range of administrative ('office' type) functionalities that can be achieved quite efficiently by use of a programming approach instead of by means of more conventional forms of office productivity tools such as dedicated Word Processing or Spreadsheet software.

For example: Suppose I have a table (e.g. in a CSV file) of grades (and perhaps other information) for the students taking a module and I want to produce a form for each student that sets out their personal information relating to that module (e.g. there total grade, marks for each component, whether they have to retake some coursework or the exam etc).
One way to do this is to use, say, Word and type in all the information for each student and mail them a personal document.
Another, way that a programmer might take is to code up some script that reads the data from the CSV and automatically creates a document for each student (and perhaps automatically emails it to them).

This kind of idea is nothing new. But what is perhaps surprising is that programming language do not provide much support for this kind of implementation. Even basic tasks such as creating documents populated from data have to be implemented by intricate quite low level programming, and this has to be written for each case. So it is not surprising that even keen programmers will often prefer to just use conventional office software rather than implementing a program that would perform the task.

Nevertheless, recent developments in programming environments and general expansion of computer literacy provide reasons to believe that it may now be possible to create programming-based tools that provide flexible, robust and useful functionality that can support administrative tasks.

Here are a some ideas of how programmable administrative functionality could be provided:

  • Structured Data Formats, in particular CSV for tabular data and JSON for tree-structured data are now very standard and can be used as general ways to represent information and pass it between applications.

  • Notebook programming, using environments such as Jupyter has become very popular among programmers who want to carry out tasks that involve a combination of data analysis, programming and displaying of results. On top of Jupyter, sophisticated libraries such as (Ipywidgets) have been written that enhance the interface with ways to create graphic displays and also to extend the interface with widgets (buttons, sliders, text-boxes etc). Such widget libraries can potentially provide a flexible programmable interface to view and edit structured data and to link it to other functionalities.

  • LaTeX the very flexible but somewhat complex system for text formatting is now quite widely used and more accessible than previously (e.g. via use of Overleaf). Compilation of LaTeX into PDF can be done quickly on most machines and nearly all machines can display PDF. Hence, functionality for creating LaTeX documents by populating templates with stored data would provide fairly straightforward way to create documents from data.

Project Aims

The aim of a project in this area would be to:

  • specify a scope of useful administrative functionalities,
  • identify a suitable platform by which relevant supporting functions could be provided to a programmer
  • develop a library package that can easily be used by programmers to support various kinds of administrative task that they may have the misfortune to encounter.