Dyalog ’23 Videos: Week 6 – Tools and Services

An increasing number of APL systems serve business logic as services, in addition to providing a user interface. Some recent APL applications have no user interface at all, and are only available as services.

For this reason, Dyalog’s web service framework, Jarvis, features prominently in Brian Becker’s overview of the current state of tool development at Dyalog Ltd. Brian is the APL Tools Architect, and the author of both Jarvis and HttpCommand, our tool for making web requests (Jarvis provides server functionality, while HttpCommand provides client functionality).

Jarvis is the foundation of many new APL projects, two of which are featured this week. First, Finn Flug from Dittrich & Partner Consulting GmbH (DPC) tells the story of an application that started its life as a COM service implemented in APL+Win, was converted to a web service using Jarvis, and was then deployed as a docker container. Docker containers are also the execution platform for Claus Madsen’s talk. For decades, Claus has been writing software in APL for pricing financial instruments; he is one of Denmark’s leading experts in this field. Claus is not a software engineer, so when a new client wanted a pricing application as a web service, he needed a little help from his friends at Dyalog Ltd. He wanted to replace the binary workspaces that he had been using to hold his source code with docker containers, and for these docker containers to be rebuilt and published on Amazon Web Services every time he committed a change to one of his APL source files (managed on GitHub). To his surprise, since making this change he has found that he feels more in control of his APL development workflow than ever before – without having lost any flexibility.

The only talk that doesn’t mention Jarvis is Stig Nielsen’s talk on “Worker Bees”, where he demonstrates a mechanism which is similar to Dyalog APL’s isolates. The difference is that where the isolate workspace launches separate processes to host isolates, Stig makes use of a .NET class that allows a single process to launch multiple Dyalog interpreters that all run within the same process. This mechanism has only been made available to selected clients because some features of Dyalog (like file holds and locks or the use of DLLs) are restricted in this mode – but it has the advantage that data can be shared in-process, between multiple APL interpreters and components written in C#.

——————————————

This week’s videos:

Materials for all presentations can be downloaded from the Dyalog ’23 webpage.

Dyalog ’23 Videos: Week 5 – Tools and Interfaces

This week, the focus is on the use of tools and interfaces in applications. Mark Wolfson from BIG integrates data from 1,000 retailers to provide business intelligence to both the retailers and manufacturers. Over the last couple of years, Mark has migrated his application from IBM APL2 to Dyalog APL. He tells the story of how Dyalog’s tools and features (including SQAPL, Jarvis, HttpCommand, .NET integration, ⎕JSON, and ⎕CSV) have enabled BIG to respond to customer needs faster and more flexibly than ever before.

Kai Jaeger has a long history of developing tools and utilities for Dyalog APL. He is also the main developer of the new Tatin Package Manager. In addition to developing the package manager itself, he has been working on moving his tools and small “APL-cations” to Tatin and GitHub, where Kai is now responsible for 90% of the existing packages. His presentation also briefly introduces several new packages and recent enhancements to existing tools.

Following immediately after Kai, I attempted to demonstrate how much easier packages can make your life by creating a small APL application within the new Cider project management system, using one Tatin package and one NuGet package. The Tatin package is Dyalog’s HTTP Client utility, HttpCommand (a rough equivalent of cURL), which is used to retrieve data from the web, and the NuGet package is MailKit, which reads e-mail using the POP3 protocol.

The new .NET eco-system is a potential source of many very useful packages that will work in the same way under Microsoft Windows, Linux, and macOS. Modern .NET APIs make widespread use of generic classes and methods, which means that they work the same way with different data types. Although this is how we have always worked in APL, Dyalog’s .NET bridge assumes that .NET expects specific data types. In his “Part 2” talk, John presents his thoughts on how Dyalog can embrace .NET generics.

The final two talks this week are about potential future packages. First, Josh David takes a look at open-source statistical libraries available to the APL developer, including KokoStats and TamStat. Rich Park follows with a demonstration of a simple interface for producing graphs from APL data using Vega-lite, a declarative language for describing visual presentations using JSON. Charts are rendered using a JavaScript library and, thanks to the HTMLRenderer, data can be provided directly from APL to produce graphics ready for publication on the web.

It’s great to see that the APL ecosystem is not only alive and well, but expanding!

——————————————

This week’s videos:

Materials for all presentations can be downloaded from the Dyalog ’23 webpage.

Dyalog ’23 Videos: Week 4 – Research and Education

I am always thrilled to hear from people who have been able to use APL to gain insight into difficult subjects, or use APL to pass knowledge on to others. A truly fascinating and surprising example of this at Dyalog ’23 was the talk titled “quAPL – A Quantum Computing Library in APL”, in which Marcos Frenkel presented work that he has done together with Santiago Núñez-Corrales and Bruno Abreu at the National Center for SuperComputing Applications, University of Illinois at Urbana-Champaign in the USA.

I say “surprising” because I had imagined that quantum computers were a bit like the analog computers of old, where you would initialise some “circuits” and then let the thing settle into some kind of minimal energy state – and, therefore, about as far from APL as you could get. However, when you take a closer look at quantum computing, qubit states are “matrix multiplications all the way down”. To quote Marcos: APL naturally expresses quantum concepts, leading to higher level programming constructs.

Jesús Galán López is a metallurgist at Ghent University in Belgium. In two presentations at Dyalog ’23, he explains how he has been exploring the use of APL for scientific and engineering work. He takes us on a deep dive into the use of APL to help students write better models of processes like grain growth in metals than they would be able to using traditional programming languages.

Dyalog had two interns this summer: last week’s video collection featured work done on an Array Notation implementation by Kamila Szewczyk from Saarland University. This week, Asher Harvey-Smith talks about his experience as an intern, some of the teaching materials that he worked on over the summer, and his adventures teaching algebra to his mates using APL after he returned to the University of Warwick.

Not all education happens at an institution: sometimes you have to learn APL on your own, with the help of online friends. If you are really keen, you can attend conferences and hunt down Aaron Hsu. The final talk this week is by Brandon Wilson. In a talk titled “Introspections of an Intermediate APLer – The Good, Bad, and Ugly of Learning APL“, he (in his own words) offers the perspective of a firmly middle-intermediate APLer trying to make the most of the glittering promises of “APL as a tool of thought” while the pains and joys are salient.

——————————————

This week’s videos:

Materials for all presentations can be downloaded from the Dyalog ’23 webpage.

Dyalog ’23 Videos: Week 3 – Dyalog Core Development

This week’s collection consists of presentations by members of the development team, and concentrates on language features and development tools that the developers are currently designing or already implementing. Many of these features are likely to be in version 20.0 of Dyalog, which we plan to release in early 2025, about a year after version 19.0 becomes available. In other words, there is still time to comment on these ideas and propose changes or additions…please take a look and let us know your thoughts!

John Daintree presents an update to the design (and prototype implementation) of so-called Token-by-Token (TBT) debugging, which will make it possible to step through code one primitive at a time rather than one line at a time. This promises to be a wonderful teaching tool, and will also help experienced users debug complex expressions – especially trains and other tacit constructs.

In the presentation on “Setting and Getting Variable Values”, Adám Brudzewsky proposes extensions that will simplify (and speed up) a number of frequently-occurring patterns, where application code needs to reference or update variables based on arrays containing variable names. At the moment, most solutions require complicated, inefficient, and uncomfortable uses of the execute primitive (which some code scanners might identify as potentially unsafe).

Adám’s second presentation also proposes ways to simplify frequently-occurring use cases, this time related to a relatively recent addition to the Dyalog language, the key operator (). Similar to an SQL “group by” clause, key performs operations on groups of data that are partitioned using key values – and it suffers from similar issues if you want the results to be in a particular order, or include entries for key values that do not occur in the data which is at hand.

Peter Mikkelsen proposes a new mechanism for making shell commands from Dyalog. Rather than extending the existing mechanism (⎕SH and its synonym ⎕CMD), which is widely used by existing code bases, Peter proposes a new system function that will manage both binary and encoded input and output, and include features such as whether to error on a non-zero exit code and ways to redirect input and output

The final talk in this block is by Kamila Szewczyk, a student from Saarland University, who was an intern at Dyalog Ltd this summer. In this whirlwind talk, she covers her implementation of a prototype of an APL Array Notation deserialiser, which will be available as an I-Beam in version 19.0, and probably used by Link 4.0. When she needed a break from that project, she created internal experimental builds of the interpreter to try out a large number of interesting ideas that are present in other array language implementations, such as automatic numerical differentiation, the obverse operator, and a monadic inner product where, for example, -.× computes the determinant.

——————————————

This week’s videos:

Materials for all presentations can be downloaded from the Dyalog ’23 webpage.

Welcome Aarush Bhat

In pursuit of his dream to contribute to the development of a programming language professionally, Aarush started cold emailing companies that worked on them (there aren’t a lot, but a lot). One of the companies he contacted was Dyalog Ltd. Aarush initially joined us in January 2023 as a contractor, focusing on testing the primitives of the language with a new test suite, and in August he officially became a full-time member of the team.

Aarush’s interest in computers led him to a Bachelor of Technology Degree in Computer Science and Engineering from Vellore Institute of Technology, Vellore, India. Before joining Dyalog Ltd, Aarush explored various facets of web technologies and made significant contributions to projects like Haskell and Bitcoin. When not working professionally, he enjoys contributing to Open Source Software.

Expanding on his love for FOSS, he was selected for sponsored open-source programs like Google Summer of Code and Summer of Bitcoin while still pursuing his academic degree.

Beyond coding, Aarush finds joy in exploring Linux, programming languages, Bitcoin, and dreaming about new mechanical keyboards (he got one)! He also has a penchant for music, photography, F1 racing, and, perhaps most notably, travelling. The flexibility of remote work has allowed Aarush to explore new places and cultures. Due to his love for photography and spending money, he has recently also bought a 360 camera that he still cannot figure out how to turn into a useful webcam. 🙁

Aarush is known on the internet as sloorush or, as his friends call him, rush (pronounced like bush).

Dyalog ’23 Videos: Week 2 – APL Problem Solving Competition

The section that is dedicated to the annual APL Problem Solving Competition is always one of my own favourite parts of a Dyalog user meeting, and the talks by the two winners this year were no exception. It is always a treat to hear about how the student winners are able to go from zero knowledge about APL to delivering very well designed, array-oriented, solutions in a few weeks, sometimes days!

This year, we were very pleased to have both the student grand prize winner Andrea Piseri and the professional winner Alexander Block present. Andrea is studying mathematics at Università degli Studi di Milano (University of Milan) and Alexander is an actuary at the Viridium Insurance Group in Germany.

Before Gitte Christensen presented the prizes to the winners and they gave their talks, our “Chief Problem Maker” Brian Becker gave us a brief history of the competition and overview of the contest website (which uses Dyalog-grown tools). He also mentioned that we are revising the format of the competition, most likely by running simpler/smaller problem sets at a higher frequency. We’ll be making official announcements about that early in 2024.

Read more about this section of the user meeting in our Dyalog ’23 daily blog post.

——————————————

This week’s videos:

Materials for all presentations can be downloaded from the Dyalog ’23 webpage.