Dyalog ’19 Videos: Week 4

Welcome to week 4 of the Dyalog ’19 recordings! This week, Tommy Johannesen of Jersie Data tells us about an interesting application that he has written in Dyalog APL. In the Copenhagen area, many school children are “fed with APL” in the sense that Tommy’s APL system connects the parents of ten thousand hungry children to about 60 vendors of school lunches. The service currently handles about 100,000 users with a system that runs under IIS and uses Dyalog as an ASP.NET implementation language. Each year 10,000 children leave after 10 years at school and another 10,000 enter grade 0; over the 30 years that Tommy has been in business, he has served more than a quarter of a million users.

Tommy Johannesen of Jersie Data

Tommy Johannesen of Jersie Data ApS

Peak time is Sunday evening, when parents and children log on to order meals for the coming week. Tommy tells the story of how he has been struggling with a memory leak that caused some user requests to fail when loads grew large; obviously not a good thing! Since upgrading to Dyalog version 17.0 he has been chasing this problem together with John Daintree – it was not completely solved at the time Tommy was at Dyalog ’19, but I am happy to be able to report that we believe it finally bit the dust in October!

The other two recordings in week 4 are centred around the topic of source code management. First, Adám Brudzewsky and I introduce the tool called “Link” which is included with version 17.1. Link creates a link (hence the name) between each function (or other “code object”) in an active workspace and a corresponding text file. The namespace structure of the workspace corresponds to the directory structure that the workspace is linked to. Changes made to either side of such a link – to code in the workspace or to files outside it – are immediately reflected on the other side.

Paul Mansour of the Carlisle Group

Paul Mansour demonstrates Git integration with AcreTools

The intention of a tool like Link is to enable the use of source code management systems like SVN or Git to manage source in the form of text files. These source code management systems allow the implementation of many different “workflows”, defined by parameters like how branches are used, how frequently merges are done, and how conflicts are handled. Git allows a lot of freedom, which many small teams (and that includes one-man-bands 😊) don’t need. Immediately following the talk on Link, Paul Mansour took the stage at Dyalog ’19 to talk about tools that he has developed to implement a simple but effective Git workflow, suitable for many APL projects.

Summary of this week’s videos:

Dyalog ’19 Videos: Week 3

Stig Nielsen of SimCorp

Stig Nielsen of SimCorp

In the third week of Dyalog ’19 recordings, Stig Nielsen from SimCorp A/S talks about recent work to turn a very large body of APL code, originally designed to work well on workstations, into a 3-tier solution. This requires turning everything “inside out”, making the application a service that can be called from cloud-based components. Fortunately, the parts of the application that have been implemented in APL have been using a model-driven approach to user interface specification for decades. This makes the task a lot simpler compared to some of the code written in other languages (which needs a complete rewrite). Stig explains both the obvious solution and the one that might actually work.

Brian Becker shows us the HTMLRenderer

Brian Becker shows us the HTMLRenderer

The other two talks that we are releasing this week are also related to producing portable user interfaces. The HTMLRenderer is a component that is integrated with Dyalog APL under Microsoft Windows, GNU Linux and Apple macOS. It allows APL applications to use HTML/JavaScript to produce Desktop applications that behave identically on all these platforms – in much the same way that NodeJS allows. Brian Becker introduces new features of the HTMLRenderer in version 17.1, and a number of tools that allow you to build user interfaces that run not only on the HTMLRenderer, but also as a Web Server.

Josh David demonstrates his Easy GUI

Josh David demonstrates his Easy GUI

Josh David follows up with a talk about “EasyGUI”, a tool that he built as his final year project at Scranton University. EasyGUI is built upon the HTMLRenderer, and allows applications to have a very simple UI for collecting input from the user and for displaying progress bars, simple reports or graphics. It does this without requiring that the user learn any HTML, JavaScript or CSS – it is all generated by a set of very simple functions.

Summary of this week’s videos:

See you next week for the next three recordings from Dyalog ’19.

Dyalog ’19 Videos: Week 2

Welcome to the second week of recordings from Dyalog ’19 in Elsinore! This week we are featuring three presentations about work that is either already available, or will appear in Dyalog version 18.0 in 2020.

APLcart logo

All three talks are by members of the Dyalog development team, but Adám Brudzewsky’s talk on APLcart is labelled U14 because the bulk of the work has been done in his own time. APLcart is a novel way of making it easy to find information about how to do things in APL, as opposed to finding documentation for a particular feature of the language or development environment. Although it is brand new, APLcart is already a very effective tool. I recently had the pleasure of teaching an introductory APL course where I told the students about APLcart on the first day. By the end of the week, every time the students had to solve an exercise, they headed straight for APLcart. Please check it out, try to find things, and let Adám know about anything that you can’t find so he can add it!

Richard Smith talks configuration files

One of our most important goals is to make Dyalog APL as capable – and as similar – as possible on all significant computing platforms, ideally allowing you to develop on any supported platform and deploy the solution to all others. One of the remaining hurdles is configuration of the interpreter, the development environment – and applications. This is currently done very differently from one platform to the next. Richard Smith introduces a project he is working on that aims to provide a single format for configuration files across all platforms. The choice of a file format is not an easy one, and a significant part of this recording consists of comments from the audience – including members of the Dyalog development team – voicing a variety of opinions about this.

Marshall talks tacit techniques

Finally, a delicacy for language geeks: The word tacit means “unspoken”. Tacit programming involves expressions consisting only of functions, operators and constants; the arguments are implied. For example, the expression (+⌿ ÷ ≢) is a function train, which should be read “sum divided by count” – without speaking about what the functions are applied to. The corresponding “explicit” expression would be {(+⌿⍵) ÷ ≢⍵} which mentions the argument twice. In his talk on Tacit Techniques, Marshall explains how tacit programming can be elegant and powerful, and why a set of new operators planned for Dyalog version 18.0 will be particularly useful for tacit programming. His talk includes a neat way of ranking poker hands with the over () operator, which will be available in Dyalog version 18.0.

Summary of this week’s videos:

Join us again next week for another three recordings from Dyalog ’19.