Home Page Register Prices Programme Workshops Presentations Presenters Venue Directions

Some of the workshops require materials that should be installed on your laptop prior to attendance – see the pre-requisites here: Pre-requisites

You are very welcome to change which workshop you attend at the last moment, as long as there is space in the workshop room. However, before doing this, please check that you meet the pre-requisites for the workshop that you are joining.


Workshops have significant time set aside for participants to experiment with the subject matter.

Key to workshop identifiers:

  • "SA" – workshop is scheduled for Sunday morning (AM)
  • "SP" – workshop is scheduled for Sunday afternoon (PM)
  • "TP" – workshop is scheduled for Thursday afternoon (PM)

SA1: Project Management using Link, Cider, and Tatin (Part 1 of 2) summary
Morten Kromberg, Kai Jaeger, and Gilgamesh Athoraya

Recent versions of Dyalog include Link, which makes it easy to use a folder containing text files as the source of your APL code, rather than a binary workspace. That might be all you need for really simple applications, but it doesn't take long before you want to have dependencies on code from other projects – or Tatin packages – to complete your application. You might also want to have tests and development tools that are in your source folder(s) but not delivered to end users. These additional features are the domain of a project management system like Cider.

This workshop provides an introduction to using Cider (which is included with Dyalog version 19.0) to manage Dyalog APL projects.

If you are interested in making your work available to other users in the form of a package, or simply want to understand how packages are created, you can continue with second part of the workshop on publishing packages using Tatin (SP1).

Keywords: project management, Tatin, Cider, Link

SA2: Tacit Techniques summary
Adám Brudzewsky and Rich Park (asst. Peter Mikkelsen)

Are you intrigued or confused by the growing prevalence of tacit APL code (trains and compositional operators)? If so, this workshop is for you! We'll help you to spot relevant patterns, guide you in using appropriate tacit constructs to your advantage, and coach you how to decipher others' code if you find it hard to read at a glance. In addition, we'll show you functionality and performance enhancements that can easily be achieved with tacit techniques, expanding your vision of what's possible with APL.

Keywords: function composition, trains, tacit, operators

SA3: Applied Performance Challenge summary
Karta Kooner and Aaron Hsu

This workshop is designed to encourage a holistic understanding of how to think about and improve the performance of APL code. You will be given the opportunity to collaboratively apply a variety of techniques at all scales of performance optimisation to a non-trivial APL application.

In this hands-on workshop, you will be able to traverse through all the phases of application optimisation to understand how each phase impacts the others. We intend to cover both high level and low level optimisation, as well as high and low level performance analysis.

Keywords: performance, optimisation, profiling, architecture

SP1: Project Management using Link, Cider, and Tatin (Part 2 of 2) summary
Gilgamesh Athoraya, Kai Jaeger, and Morten Kromberg

Following on from the workshop on APL project management (SA1), we will look at the process of creating a package from a project, publishing it to a Tatin server, and releasing new versions.

Keywords: package management, Tatin, Cider, Link

SP2: Development Masterclass summary
Adám Brudzewsky and Stefan Kruger (asst. John Daintree)

Dyalog's graphical integrated development environments (the cross-platform RIDE and Microsoft Windows-only IDE) have many useful features that can enhance your ability to develop and debug code, not all of which are immediately obvious. We'll take you on a hands-on tour in which you'll be able to use existing functionality and add your own, making you a more effective APLer.

Keywords: development, debugging, IDE, RIDE

SP3: Providing and Using Web Services summary
Brian Becker (asst. Rich Park and Josh David)

A web service is a software system designed to enable communication and interoperability between different applications or systems over the internet. It provides a standardised way for different software applications to exchange data and perform various functions. Web services are commonly used for a wide range of purposes, such as integrating different systems, sharing data between applications, automating business processes, and building distributed applications. Web services provide a scalable and platform-independent way of enabling communication and data exchange between disparate software systems. These functionalities can be accessed and utilised by other software applications, irrespective of the programming languages or platforms they are built on.

In this hands-on workshop, you'll learn how to:

  • consume web services using HttpCommand.
    HttpCommand is a utility used to issue HTTP requests and receive responses. It can interact with practically any web service. We will:
    • cover the most commonly used features of HttpCommand
    • learn how to develop and debug web service requests
    • access a variety of web services including web services that require authentication
  • provide web services using the Jarvis web service framework.
    Jarvis makes it easy to make many Dyalog applications available over the internet. We will:
    • develop a simple web service in 5 minutes
    • cover the essential features of Jarvis
    • examine and experiment with a sample web service
    • demonstrate how to access our web service from a browser and using HttpCommand

Keywords: Web services, HttpCommand, Jarvis

TP1: Testing APL Systems summary
Morten Kromberg, Michael Baas, and Stefan Kruger

Writing your own test framework in APL only takes a few minutes, which is one of the reasons why there are so few shared frameworks – most users prefer to build something that is tuned to their own taste and specific internal requirements.

Whether you are starting a new APL project or it is time to revisit the way you maintain an existing system, it is worth taking a look at best practices in the software engineering community. Many modern practices also make good sense for APL development, and can be easily adopted. This workshop will begin with the introduction of a minimalist testing framework, present Dyalog's own "DTest" framework, and end with a demonstration of how you can establish an "industry standard" continuous integration pipeline using GitHub.

Keywords: testing, code coverage, Continuous Integration, DTest, GitHub actions

TP2: Leading Axis Theory and Practice summary
Rich Park and Adám Brudzewsky (asst. Josh David)

This hands-on workshop will show you how to design your functions and structure your data so that you can wield the keys to the array kingdom – the rank operator and dyadic transpose. Rich and Adám will demonstrate how these, together with various other leading axis primitives, can simplify your code and give you superior performance. You'll be presented with various problems to solve, as well as participate in a discussion on how to maximise benefits from leading axis theory.

Keywords: rank operator, transpose, leading axis theory, performance

TP3: APL Functions to Import, Export and Process Data in Files summary
Richard Smith and Peter Mikkelsen

The interpreter provides several built-in functions to import, export, and process data in files, and to manage the host file system. These are invaluable tools in their own right, and can be the building blocks for powerful APL applications that are largely independent of the host system on which they run. This workshop examines these functions in depth, starting with a simple introduction and introducing their Dyalog v19.0 enhancements.

Keywords: import data, export data, built-in portable file functions

back to top

Copyright and Trademarks

UNIX® is a registered trademark in the United States and other countries, licensed exclusively through X/Open Company Limited.
Windows® is a registered trademark of Microsoft Corporation in the United States and other countries.
Oracle® and Java™ are registered trademarks of Oracle and/or its affiliates.
macOS® and OS X® (operating system software) are trademarks of Apple Inc., registered in the U.S. and other countries.
All other trademarks are the property of their respective owners.

back to top