Home Page Register Prices Presentations Workshops Directions


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.

Some workshops require software to be installed in advance; details of these pre-requisites will be provided nearer the time.

SA1: Taming Statistics with TamStat summary
Stephen Mansour

TamStat is a software package, written in Dyalog APL, that allows the user to perform statistical analysis by taking advantage of arrays, functions, operators and namespaces. Recent developments include a portable user interface based on HTML/JavaScript, making TamStat available under Microsoft Windows, Apple macOS and GNU/Linux.

In this workshop we will discuss the four basic types of functions used in statistics: summary functions, distributions, relational and logical functions. Stephen will then introduce several operators that can be used with these functions to perform statistical analysis. From these building blocks we will perform statistical analysis using the HTML interface including:

  • descriptive statistics including graphs, tables and summary functions
  • discrete and continuous probability distributions using the probability, criticalValue theoretical and randomVariable operators
  • regression models
  • inferential statistics using the confInt, sampleSize and hypothesis operators (if there is time)

SA2: Performance Tuning summary
Jay Foad, Marshall Lochbaum and Roger Hui

In this workshop we'll look at some snippets of APL code and collectively brainstorm ways to make them run faster. We'll also talk about some general optimisation techniques and show you how to apply them in practice. We'll come prepared with some real-life code examples, but please feel free to bring your own examples for the group to work on.

SA3: Introduction to Conga summary
Bjørn Christensen (asst. Adám Brudzewsky)

Conga is Dyalog's interface to communications using TCP/IP, the most widely-used technology for sending messages between software components, whether they are running on the same machine or the other end is on a satellite in outer space. Typically, one end of a connection is a server that listens for incoming connections, allowing one or more other components to connect to it and start transmitting data.

Conga is designed for APL users and, in addition to supporting the low-level transmission of byte streams using TCP/IP, it allows you to efficiently and reliably transmit entire APL arrays between APL systems. Conga is the backbone of many client/server systems implemented in Dyalog APL.

This workshop is an introduction to Conga and assumes no knowledge of networks or communications. It will cover:

  • an introduction to TCP/IP sockets
  • the client/server architecture of Conga
  • the different modes that Conga can work in
  • the events that Conga returns to Dyalog
  • communication between Conga and Dyalog
  • communication between Conga and the non-APL outside world

Bjørn also demonstrates how Conga can be used to secure and authenticate communications.

Keywords: Conga, TCP/IP, sockets, security, communication.

SP1: Cross-Platform User Interfaces Using WC2 summary
Brian Becker and Michael Baas

Since c1990, Dyalog APL has provided a simple but powerful mechanism for creating Graphical User Interfaces under Microsoft Windows using the ⎕WC (Window Create) system function. Today, new applications need to target a broader range of platforms, and HTML/JavaScript has emerged as the dominant technology for modern, portable user interfaces.

The HTMLRenderer (introduced in Dyalog version 16.0) allows an application running under Microsoft Windows, GNU/Linux or Apple macOS to present user interfaces created using HTML/JS. WC2 is a library of UI elements, comparable to the elements that could be created using ⎕WC (but significant richer and more extensible, as the technology makes it easy for 3rd parties to add new "widgets"). It enables an APL user to build HTML-based user interfaces, making it possible to deliver a consistent and quality user experience across platforms using the same code base.

In this hands-on workshop we will:

  • teach you the basics of using WC2
  • develop a simple user interface for a sample application
  • explore a variety of widgets and user interface components

This could be the workshop for you if any of the following apply:

  • you want to build solutions that will run on multiple platforms without developing platform-specific code
  • you want to take advantage of the plethora of HTML-based widgets that are available
  • you want to build solutions that can run on the desktop using HTMLRenderer or over the internet using MiServer using the same application code
  • you're a Mac or Linux user
  • you enjoy learning and using new tools and technologies

SP2: Introduction to Namespaces summary
Nicolas Delcros (asst. John Daintree)

In Dyalog, namespaces are a convenient way to organise a workspace (analogous to the way in which directories are a convenient way to organise a file system). Namespaces simplify application development by allowing you to give the workspace a structure; they can be used as containers for objects, data and for code modules. Whether classes are implemented in APL, or external classes like ⎕WC GUI objects and classes from the Microsoft .NET framework, each object resides in a namespace.

Nicolas demonstrates the value of namespaces, which have become cornerstones of modern APL application development, showing how they have been integrated into the APL paradigm, their power, their limitations and the fundamental differences from nested arrays, where a change to an element of an array that has more than one name will force a copy which decouples the values from each other. He also explores how namespaces enable APL to easily interface with most modern technologies, which are often object-oriented, and allows you time to experiment and become comfortable with the tricky bits.

SP3: APL Projects and Packages summary
Morten Kromberg and Gilgamesh Athoraya

This workshop introduces a prototype of APM – the APL Package Manager – a framework for developing applications and libraries in APL. After a brief presentation of the framework and its use, Morten and Gil dive into concrete examples and demonstrate how to:

  1. create a new project
  2. use packages in a project
  3. create and publish a package
  4. test and build a project

After a hands-on session, participants will be invited to provide feedback on the ideas behind the prototype implementation.

TP1: Dyalog Version 17.0 In Depth summary
Jay Foad, Richard Smith and Adám Brudzewsky

An interactive tour of Dyalog APL version 17.0. Adám, Jay and Richard will show you how to use the new features, with hands-on time for you to try them out yourself.

TP2: APL in the Cloud summary
Morten Kromberg

"The Cloud" is a rather nebulous term used to describe a collection of public and private machines upon which a growing collection of applications or services run. The cloud makes it possible to make an application available across the globe with a minimum of effort: you do not need to set up a computer and connect it to the internet. If the load on your application grows quickly, you can add more hardware with almost no effort, and only pay for what you and your customers actually use.

In this workshop, you will learn how to develop a simple service on your laptop or other local machine, and then install it on the cloud, using tools that allow your deploy new versions of it in seconds. We will:

  • introduce Dyalog APL for Linux and RIDE
  • introduce the JSONServer framework and create a simple service
  • introduce Docker, a tool for describing how to build and start virtual machines – and create a Docker Image containing Dyalog APL and our service
  • use Docker to start our service
  • introduce Kubernetes, a tool for deploying Docker images and show the use of Docker to deploy our application to two public cloud provides: Amazon Web Services and Microsoft Azure
  • demonstrate deploying a Microsoft Windows application to the cloud
  • show how Kubernetes can be used to launch multiple copies of our service and distribute the work from multiple clients (a mechanism known as Load Balancing)
  • talk about sharing data between multiple processes running on the cloud

TP3: MicroServices Made Easy summary
Brian Becker (asst. Bjørn Christensen)

Microservices is a new buzzword describing a way of designing software applications as suites of independently deployable services. You may not you need to build a complete Microservice architecture (or even understand what that means). However, there is no question that it is often useful to be able to package any collection of one or more APL functions – up to, and including, entire applications – as services that can easily be called by other components.

In this workshop, you will learn how to wrap APL code as a service using HTTP and JSON – protocols that are supported by all applications and programming languages – and will make your code easy to embed in any application, no matter how it is constructed or where the collaborating components are actually running.

Brian will show you how to:

  • install JSONServer, a server developed by Dyalog to provide an easy-to-use service framework
  • convert a simple application to use JSONServer
  • test the service using a couple of different clients (one written using Dyalog APL and one written using HTML/JavaScript)
  • explore advanced topics including security, scalability, and session management

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