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


A code starting with "SA" indicates that a workshop is scheduled for Sunday morning, "SP" indicates Sunday afternoon and "TP" indicates Thursday afternoon.

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

SA1: Idiomatic Expressions and Array-Oriented Solutions in APL summary
Rich Park and Rodrigo Girão Serrão

APL is famous for being used to tackle problems in a "different" way compared to more conventional programming languages. Although it is possible to convert code written in Python/Java/C#/etc. into APL by merely substituting keywords with symbols, there are better ways to take advantage of a notational, executable tool of thought. In this hands-on workshop, you will learn how to use array-oriented techniques to solve some problems "the APL way". Only a basic knowledge of APL is needed.

Keywords: problem solving, array-oriented programming, rank operator, leading axis theory

SA2: Building Web Services with Jarvis summary
Brian Becker

Almost all programming languages and application frameworks, on all platforms (including phones and IoT devices), include utilities tools that make it easy for them to call Web Services. This means that, if you embed your APL code in a Web Service, you can integrate your functions into almost any software system. Dyalog's framework for easily developing APL-based web services is Jarvis.

In this workshop you will:
  • learn how to decide whether to build a simple HTTP/JSON service or do the extra work required to implement a proper RESTful server.
  • build a simple (HTTP/JSON) web service in 5 minutes.
  • learn about Jarvis' configuration options.
  • learn about session management and authentication.

Keywords: Web Service, Jarvis, HTTP, JSON, REST

SA3: Link, Text-Based Sources, and Source Code Management summary
Morten Kromberg and Josh David

Hopefully you are already convinced of the benefits of storing your source code in text files. In this workshop, we will show you how to make the shift from workspace to text files using Link. We will also cover source code management tools (for example, Git) that you can use to collaborate and share your code with other team members. This workshop involves extensive hands-on practice.

Keywords: Link, Git, GitHub, VS Code, Acre

SP1: Recent Language Features in Dyalog summary
Rich Park and Rodrigo Girão Serrão

This workshop focuses on features introduced in Dyalog v18.0 and v18.2 – new functions and operators as well as extensions to primitives and system functions – and includes hands-on exercises designed to show their use cases. You might find elegant solutions to problems that you are currently using workarounds for, improved ways to express algorithms, or just generally useful tools.

Keywords: function composition, primitive extensions, trains, tacit, operators, text, datetime, formatting, meta information

SP2: Deploying Services summary
Morten Kromberg and Brian Becker

You've built a Jarvis web service (or some other APL-based service), now you need a way to make sure that it is up and running all the time, and able to scale to meet demand if it should grow suddenly? In this workshop we will cover some of the ways by which you can "deploy" your web service, either on your own hardware or "hosted" using one of the most widely-used systems, Amazon Web Services (AWS).

This workshop will cover:

  • using Docker containers.
  • using AWS.
  • running a secure service.
  • scalability.
  • options for permanent storage.

Keywords: Web Service, scalability, security, load balancing, hosting, Docker, AWS, deployment, Jarvis

SP3: Working with Non-APL Data Sources summary
Richard Smith and Bjørn Christensen

Dyalog has a rich set of tools to import, export, and process data from external sources such as files, databases, and exchanges with other applications. This workshop explores some of these, including:

  • direct access to a host filesystem.
  • reading and writing of text files.
  • reading and writing the content of Character-Separated Variable (CSV) data.
  • reading and writing JavaScript Object Notation (JSON) data.
  • working with Microsoft Excel spreadsheets.
  • importing data from databases.
  • importing data from OData sources in the cloud.

Keywords: filesystem, text files, CSV, JSON, Microsoft Excel, databases, OData

TP1: Understanding APL Performance summary
Aaron Hsu and Karta Kooner

This workshop takes a thorough, first principles, approach to understanding APL performance, with the goal of equipping you with the tools and thought processes that you need to take a piece of APL code and understand how it is likely to perform, why it performs this way, and strategies for potentially improving the speed of the expression. We will also cover not only tricks and one-off performance considerations, but the tools that will allow you to feel confident that you have written "fast APL" and haven't missed something critical. Finally (time permitting), we will discuss the use of Accelerators for GPU-based APL programming using the Co-dfns compiler and how this impacts our performance analysis.

Keywords: performance, analysis

TP2: Futures and Isolates summary
Morten Kromberg (asst. John Daintree)

Futures and isolates are APL language features designed to make it straightforward to harness all the cores that your computer (or cluster of computers) has available, whether you are writing a new application or need to speed up legacy code. Following a theoretical overview of Futures and Isolates and a description of how they are implemented, the workshop will consist of exercises showing you how to:

  • create isolates and populate them using current workspace contents – or a saved workspace.
  • monitor the state of execution.
  • debug and troubleshoot.
  • call back to the parent space from within an isolate.
  • distribute large workloads.
  • use remote isolate servers.

Keywords: parallel, asynchronous, multicore, performance, futures, isolates

TP3: Creating, Maintaining, and Publishing APL Packages summary
Josh David and Brian Becker

A package is a versioned APL module that has been wrapped up in such a way that it can easily be installed and managed using a Package Manager such as Tatin. A package manager makes it easy to know when new versions become available, and to upgrade the packages that your application depends on. In this workshop, we demonstrate how to create APL packages either from existing code or a new project. We also look at how to load and use packages as dependencies in your application, and give an overview of the different frameworks that exist and their use cases.

Keywords: project management, package management, dependency management, DevOps, Git, GitHub, semantic versioning

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