Dyalog '19 was held in Elsinore, Denmark, from 8-12 September 2019

Programme (PDF) Materials Presentation Videos

Dyalog Presentations

D01: Welcome to Dyalog '19 summary | slides (PDF) | video (18 mins)
Gitte Christensen, Managing Director (CEO)

Dyalog Ltd's CEO opens the user meeting.

D02: The Road Ahead summary | slides (PDF) | video (37 mins)
Morten Kromberg, Technical Director (CTO)

In accordance with tradition, Morten will look briefly back over his shoulder before turning his gaze to the future and providing some predictions regarding the road that lies before Dyalog and users of Dyalog APL.

D03: Cor(e) Blimey! What's He Up To Now? summary | video (45 mins)
John Daintree

.NET is Dead. Long live .NET!

The .NET Framework ends its life at version 4.x. In 2020, .NET 5 (based on .NET Core) will be released. We'd better get started...

D04: Tacit Techniques with Dyalog version 18.0 Operators summary | slides (zip file) | video (29 mins)
Marshall Lochbaum

"Tacit" programming is a paradigm in which the programmer, rather than writing a dfn or tradfn that explicitly references arguments, builds a single derived function and relies on operators and trains to control the flow of arguments. While purely tacit programming is best used only for recreational confusion, everyone uses derived functions. Marshall intends to show how tacit programming can actually help organise your code and reduce complexity. This talk also introduces three new operators to be released with Dyalog version 18.0 which will prove crucial to writing clear tacit code: Atop (), Over () and Constant ().

D05: Link summary | materials (zip file) | video (27 mins)
Morten Kromberg and Adám Brudzewsky

The Link system, prototyped by Morten for version 17.0 in 2018 and then substantially rewritten by Adám in 2019, creates an invisible bond between the active workspace and one or more folders in a file system. Each function, operator, namespace or class is linked to a source file. Selected arrays, which are considered to be part of the source code of the application, can also be included in the link. Changes on either side of the link are immediately copied to the other side. The result is that – without changes to how APL prototyping, development and maintenance is done – APL source code can be brought under the control of mainstream editors, source code management systems, and other development tools.

D06: Cross-Platform Configuration Files summary | slides (PDF) | video (30 mins)
Richard Smith

Configuring the interpreter currently requires a mix of registry entries, environment variables and command-line options. We are at the early stages of designing a portable, human-readable and editable text file format that will greatly simplify the tasks of configuring the interpreter, setting different configurations for different applications, and moving the configurations between platforms. Richard will present an overview of what you might expect in next year's release of Dyalog.

D07: Shared Code Files summary | slides (HTML) | video (22 mins)
Geoff Streeter

Shared Code Files (.dwx files) allow code to be called without fully loading the workspace that contains it; code and data is only loaded on demand. This improves the performance of large applications while reducing their memory consumption and initialisation time. Geoff will explore the gestation, development and usefulness of Shared Code Files.

D08: Is it Christmas Yet? summary | slides (PDF) | video (20 mins)
Richard Smith

APL can easily answer that question: 12 25≡2↑1↓⎕TS

Sadly it will probably tell you it's not, but how might you calculate how long you have to wait? Richard will take you on a tour of dates and times and along the way will answer that question, discuss the best way of storing a large number of times and dates in an array, will finally make sense of the timestamp in the result of ⎕FRDCI, and will find out the time in Helsinki – which he will display to you in Welsh.

D09: Implementing Reduction summary | slides (zip file) | video (45 mins)
Marshall Lochbaum

Marshall provides an overview of the techniques used to quickly implement arithmetic and logical reductions on simple arrays. Topics include classifying reductions by shape, reordering reductions, vectorisation and shortcutting.

D10: What's New with HTMLRenderer? summary | slides (PDF) | video (24 mins)
Brian Becker

Some applications need only a simple user interface, popping up a window for the user to enter a bit of data or displaying messages back to the user. Others applications may need a fully interactive, rich, graphical user interface. HTMLRenderer can address both needs, across every platform where Dyalog runs.

Introduced with Dyalog version 16.0, HTMLRenderer offers the Dyalog user the ability to develop graphical user interfaces on Microsoft Windows, Apple macOS, Linux and even the Raspberry Pi. Dyalog version 17.1 adds many new features and updates to HTMLRenderer based on user feedback and our own experiences.

In this session Brian will provide a review of HTMLRenderer, demonstrate many of its new features, and present some of the tools and frameworks that are available or in development for use with HTMLRenderer.

D11: Easy Cross-Platform GUI Creation summary | slides (PDF) | video (22 mins)
Josh David

Wouldn't it be nice to have a single function to generate an operational GUI? Josh introduces a utility library that enables the cross-platform creation of simple recurrent GUIs.

D12: Exporting Simple Microsoft Excel Tables from APL summary | demo file (zip file) | video (24 mins)
Nathan Rogers

Sometimes you just need a spreadsheet! In this presentation, Nathan introduces an ongoing project that provides a simple direct way to convert APL arrays to .xlsx files under Microsoft Windows, macOS and Linux.

D13: Uncle Andy's Fireside Chat v5 summary | slides (PDF) | video (32 mins)
Andy Shiers

Back by popular demand, Andy takes us on another venture down the lesser-known paths of Dyalog APL, showing us how to take advantage of some of the more obscure bits of functionality and avoid common gotchas.

D14: Molecular Dynamics in APL summary | slides (PDF)
Richard Park

Molecular Dynamics (MD) is a physics simulation paradigm known for requiring high performance computers and cleverly-constructed algorithms in compiled languages. Learning and developing for MD frameworks can be demanding in terms of both the physics and computational knowledge involved. Richard shows how fun and relatively intuitive it can be to build physics simulations from scratch.

D15: The APL Problem Solving Competition – How, What and Who summary | slides (PDF) | video (20 mins)
Brian Becker

This year, for the first time, Dyalog used an APL-based server to run an interactive web site for the annual APL Problem Solving Competition, which allowed interactive experimentation while solving some of the problems. Using technologies including MiServer, SQAPL, HttpCommand, GitHub and Docker, we were able to deliver a quality application that resulted in some of the best entries we've ever seen. Brian provides an overview of the architecture of the competition website, shares some data and reactions, and introduce the winners, culminating in the award ceremony for the grand prize winner and winning professional entrant.

D16: Creating your First Dyalog Jupyter Notebook summary | slides (zip file) | video (18 mins)
Richard Park

Jupyter Notebooks turn Donald Knuth's Literate Programming into a pragmatic tool for explaining code to other humans. Richard shows you how to use the Dyalog Jupyter kernel with markdown and LaTeX to take the expressiveness of APL, combine it with your finest prose and mathematical expression, and clearly express your solutions with executable code.

back to top


User Presentations

U01: Feeding Children with APL summary | slides (link) | video (22 mins)
Tommy Johannessen Jersie Data ApS (Denmark)

Tommy tells us how APL helps feed children in Denmark, in the form of a Dyalog application that runs under Microsoft IIS. For 15 years, he has survived changing business and technical requirements, and a quarter of a million kids have been fed!

U02: A Git Workflow for Dyalog APL summary | video (46 mins)
Paul Mansour, The Carlisle Group (U.S.A.)

Git is great, but the newcomer can easily drown in a sea of commands and options. Git doesn't tell you when or why to branch, when or why to merge or rebase, how to version your project or prepare a release. AcreFlow is a radically simplified Git workflow that answers these questions. It is implemented in Dyalog APL so you can branch, commit, and put out new versions directly from the APL session.

U03: Lessons for the Masses from the Trenches of Co-dfns summary | slides (PDF) | video (22 mins)
Aaron Hsu, Indiana University (U.S.A.)

Besides representing an easy way to do GPU programming in APL, the Co-dfns compiler also represents a novel, and somewhat stark, lesson on the nature of software performance, implementation and design. The compiler itself has always been designed not only to perform well on yesterday’s hardware, but also on the fine-grained parallel hardware of today and tomorrow, and to do so without the assumed costs of implementation and human-labour overheads usually associated with creating high-performance parallel code in more mainstream programming languages.

Recent benchmarking of the Co-dfns compiler has revealed much more than could have been originally anticipated when the project began, and the lessons on software design and implementation are as hopeful as they are shocking. The innovative philosophy of design of the Co-dfns compiler presents practical vectors of attack against the ever-growing problem of Software Obesity, in which software is not only difficult to write and debug, but also difficult to get performing as well as it could.

Fortunately, these lessons are not specific to the Co-dfns compiler, or even its type of program. Instead, these lessons are easily extrapolated to apply to design principles that have permeated the entire swath of programming problems and industries.

U04: TamStat 2019 summary | slides (PDF) | video (16 mins)
Richard Park

Stephen Mansour has presented his APL-based statistics framework, with a focus on teaching statistics to undergraduates, at several previous user meetings. This year, Richard presents the latest updates to the TamStat graphical interface with examples.

U05: TamStat 2019 – Technical Update summary | slides (PDF) | video (20 mins)
Michael Baas

Michael presents a more technical view of TamStat's implementation and demonstrates a few interesting details behind recent features.

U06: An Update on Mystika summary | slides (PDF)
Erik Wallace, Harbin Engineering University (China)

At Dyalog '18, Erik introduced the Mystika project, which includes a big number library, and cryptographic suite written in APL. In this presentation Erik demonstrates some of the new features of Mystika and presents some preliminary timing statistics. He also explains why the big number library might be useful outside cryptography to other users of the Dyalog interpreter.

U07: Web Enabling SimCorp Dimension summary | slides (PDF) | video (36 mins)
Stig Nielsen, SimCorp (Denmark)

As our customers are demanding services rather than software installed on premise, SimCorp has started the journey to transform SimCorp Dimension into a 3-tier solution, preparing for launching a full web-frontend version of the system. SimCorp Dimension consists of both APL and C# code, where APL is the "driver" for the entire system. Stig will take you through one of the major architectural changes that will take advantage of the "multi-concurrency" features of Microsoft.NET while at the same time continuing to use APL where much of the business logic resides.

U08: Getting to Know Each Other by…Sharing Code summary | slides (PDF) | video (26 mins)
Francesco Garue, SimCorp Italiana (Italy)

Since APL Italiana became part of SimCorp two years ago, there have been many opportunities to co-operate; we mainly shared knowledge, both between consultants and programmers. Francesco's team has been the only one, until now, to take part in a pioneering project that involves sharing a big chunk of code. He describes the origin of this project, a few bumps along the way and the current architecture of the solution.

U09: A Transaction-based Portfolio Management System in Dyalog-APL using .NET summary | slides (PDF) | video (29 mins)
Claus Madsen, FinE Analytics (Denmark)

Scrinium is a portfolio management system that can handle a comprehensive range of assets – Shares including Investment Companies and Holding Companies, Mortgages, Municipal and Corporate Bonds, Mutual Funds, Hedge Funds, Options, Warrants, Currency and Commodity based instruments, Subscription Rights, the list goes on. The system can compute returns (SR, ANN, TWR), risk (Std, VaR, Duration, Convexit, Delta, Gamma, Sharpe) and relative risk (Alpha, Beta, Jensens Alpha, Tracking Error) and deals with benchmarks and on-boarding as well as real-time calculations.

In this presentation, Claus will focus on the implementation in .NET using Dyalog APL, including speed issues and design of features.

U10: qWC – A Cross-platform Emulation of ⎕WC summary
Chris Hughes and Michael Hughes, MJH Software Services Ltd (U.K.)

⎕WC enables you to create GUI objects but is specific to Microsoft Windows; qWC allows you to emulate its behaviour across other platforms. Chris and Michael's update on the qWC prototype that they introduced at Dyalog '18 includes:

  • a general recap on the ideas and principles behind the qWC emulation
  • a progress report
  • a demonstration of some of the new features
  • the plan for the future and a road map

U11: Why Teach APL? The Art of Teaching Without Teaching summary | slides (PDF) | video (31 mins)
Roberto Minervini with Pietro Pio Palumbo, Gabriele Meroni and Alessandro Iaselli, Liceo Scientifico GB Grassi Saronno (Italy)

"I am a teacher, but I do not like teaching. In fact, I do not teach. The art of teaching without teaching is my way." (Tetsuya Miyamoto, the inventor of KenKen puzzle)

He also said that the essence of mathematics is to keep thinking. Ken Iverson said that mathematical notation is a tool of thought. From this, to think a solution to a problem using APL could be the best way to progress yourself in mathematical learning. Travel with Roberto and his students through puzzles, problem solving, APL coding and teaching.

U12: Young APLers Panel summary | video (44 mins)
Host: Stephen Taylor
Panellists: Alve Björk (Uppsala University), James Heslip (Optima Systems Ltd), Josh David (Dyalog Ltd) and Yuliia Serhiienko (SimCorp Ukraine)

Some of the younger generation of APL users discuss how they first encountered APL, their perception/experience of the language and how they see its future.

U13: How I Won the APL Problem Solving Competition summary | slides (HTML) | video (39 mins)
Jamin Wu Monash University (Australia)

Jamin Wu is the grand prize winner of the eleventh annual APL Problem Solving Competition. Following the award ceremony, Jamin describes his experiences of APL/Dyalog and tells us how he managed to master enough of it to win the competition.

U14: APLcart: A Novel Approach to Finding Your Way in APL summary | slides (zip file) | video (20 mins)
Adám Brudzewsky

There is plenty of documentation about what different parts of APL do. For example, in the IDE, you can just press the F1 key while the caret is pointing at a primitive or system function. But what if you know what you want to do, but don't know how to do so? Enter APLcart; the largest ever collection of short APL phrases.

Adám presents the interface and demonstrates how you can use APLcart to become a more effective APLer. Just don't upset it!

U15: The Irma Story summary | video (56 mins)
Tomas Gustafsson, Stormwind Ab Oy (Finland)

M/S Irma was lost in a sudden autumn storm between Finland and Sweden 50 years ago. Despite the massive search efforts, said to be the biggest ever in Finnish history, the Irma accident became a mystery. No distress signals were heard during that fatal autumn night, and Irma had chosen the weirdest routes. Everyone on board perished, including a two-year old boy and three wives of crewmen. Only one body was ever found, days later, at an unexpected location. Wreckage from the ship was discovered in the archipelago at multiple contradictory spots.

Irma was found in May 2019 by a group of enthusiasts. The reverse drifting patterns calculated using Dyalog played a crucial role in the success of the search.

back to top



SA1: Source Code Management with Git, SVN & Dyalog APL – Part 1: Installation + Demos summary | materials (zip file)
Morten Kromberg and Adám Brudzewsky

Storing APL source code in text files (as opposed to APL-specific formats like component files or saved workspaces) allows the use of a growing collection of excellent tools for source code management (SCM), building, testing and distributing applications. This workshop will provide an introduction to the most popular tools used within the Dyalog user community, including:

  • Git, GitHub and (if workshop participants request it) SVN for source code management
  • Link for synchronisation of changes between source files and the active workspace
  • Acre Desktop for project management
  • AcreFlow for simple, Git-based, workflow management

The workshop is split into two sessions:

  • SA1 – Installation and Demos: we will help with installation and demonstrate the basic functionality of each tool, and show how to use them together.
  • TP1 – Bring Your Own App: we will start with a brief recap of some key features but will mostly provide an opportunity to get started with moving your own source code into text files and setting up a work environment, with experienced users in the room.

SA2: A Decade of APL Extensions – Grouping and Processing Text summary | slides (PDF)
Nicolas Delcros and Richard Smith (asst. Marshall Lochbaum and Richard Park)

Richard and Nic take an in-depth look at some of the tools for grouping and processing text. No prior knowledge is expected.

⎕R and ⎕S use standard regular expressions (also known as search patterns) to provide powerful text processing capabilities to APL. They might look daunting at first but, by gradually building up from the basics, you will learn how to really benefit from their power within your applications. The workshop will provide a gentle introduction to regular expressions, and take a comprehensive look at how ⎕R and ⎕S make use of them.

⍺⊂⍵ and ⍺⊆⍵ are the two historical flavours of array partitioning. The workshop will illustrate their subtle differences using typical text partitioning use cases.

SA3: Introduction to HTMLRenderer summary | slides (PDF)
Brian Becker and Josh David

Introduced with Dyalog version 16.0, HTMLRenderer is a Dyalog object that enables you to build cross-platform user interfaces. You write code once, then run it wherever Dyalog APL runs – on Microsoft Windows, macOS, Linux, even the Raspberry Pi.

HTMLRenderer uses the Chromium Embedded Framework (CEF) to render HTML, which allows you to display formatted output including graphics on any platform – and implement simple input forms. With the addition of Cascading Style Sheets (CSS) and JavaScript, you can implement highly interactive user interfaces of any level of complexity.

In this workshop you will:

  • learn about the HTMLRenderer object – its properties, methods, and events
  • perform hands-on experimentation with HTMLRenderer and build a small application
  • explore some of the utilities and frameworks developed using HTMLRenderer
  • learn debugging techniques

No knowledge of HTML, CSS or JavaScript is required for this introductory workshop.

SP1: Getting started with Cloud Computing summary | materials (zip file)
Morten Kromberg and Norbert Jurkiewicz

Providers of "cloud computing" allow you to rent any quantity of (virtual) hardware on demand. Docker containers provide an easy way to get the software that you need onto any number of virtual machines and keep it up-to-date. In this workshop, we will start out by prototyping and testing a RESTFul Microservice under Microsoft Windows, and move on to deploying it under Linux on Amazon Web Services, using Docker Containers and GitHub to deploy code and S3 storage to store data and cached results.

Keywords: AWS, AWS-CLI, S3, REST (Rumba, Conga), Docker, GitHub

No prior experience with Linux is required. Using the tools introduced in workshop SA1 is recommended, but not a requirement.

SP2: A Decade of APL Extensions – Trains and High Rank Operations summary | materials (zip file)
Adám Brudzewsky and Marshall Lochbaum (asst. Richard Park, Richard Smith and Nicolas Delcros)

Marshall and Adám take an in-depth look at modern ways to apply functions. No prior knowledge is expected.

Trains (atops and forks) provide a succinct way to express common code structures. They might look cryptic at first but, by gradually building up from the basics, you will learn how to read them and benefit from their power of expression. The workshop will provide a comprehensive introduction to trains and includes plenty of hands-on time to exercise your new skills.

The rank operator () offers full control over how your functions are applied to arrays of any shape. The workshop will teach you how to wield its awesome power.

SP3: qWC – Freeing ⎕WC from Microsoft Windows to Cross-platform and into the Cloud summary
Michael Hughes and Chris Hughes

At Dyalog '18, MJH Software Services presented ⎕WC on the Web. MJH Software Services plan to market this project as a product in the near future (hopefully beta by Christmas 2019 and first release by Spring 2020). This workshop is your chance to play with an alpha copy along with the authors, and to influence the order in which things are implemented going forward.

You will be able to take a copy of the latest emulation away with you; updates will be available to download throughout the project until the final beta build. All alpha and beta versions prior to the first release will be free to the workshop attendees; but each will be time limited. Basic support will be offered to workshop attendees by MJH Software Services throughout the stages to the first release.

The workshop will be mostly hands-on, with explanations where necessary. Time will be allowed during the workshop for discussion of issues raised by the usage of the emulation and enhancement/inclusion requests. During the workshop you will build a simple cross-platform ⎕WC application and, optionally, make your form look like a standard web page simply by setting a switch.

TP1: Source Code Management with Git, SVN & Dyalog APL – Part 2: Bring Your Own App summary
Morten Kromberg and Josh David

This workshop is a continuation of workshop SA1; we will start with a brief recap of some key features but will mostly provide an opportunity to get started with moving your own source code into text files and setting up a work environment, with experienced users in the room.

Attendance of SA1 is necessary unless you already have some knowledge of the tools. If you already know a bit about them and just want the hands-on workshop part, then TP1 alone is fine.

TP2: Dyalog APL Drop-In Clinic (Not a Workshop – no need to sign up!) summary
Andy Shiers, John Daintree and friends

This is not a workshop, but we have put some specific time aside for you to come and talk to us without other distractions. You are always welcome to talk to any of us during the course of the user meeting, but at other times we might be busy doing other things.

The session will continue after the other workshops have finished so don't worry if you want to attend one of them…go to that workshop and pop in to see us afterwards.

We'll try to answer your questions and sort out your problems, but we might need to go away and think about your issues and then continue the discussion at a later time. We don't guarantee to solve your issue there and then, but we can try – and that can make a big difference!

TP3: Code Golf – Learn Cutting-Edge APL summary | materials (zip file)
Adám Brudzewsky and Marshall Lochbaum (asst. Richard Park, Nicolas Delcros and Richard Smith)

Back by popular demand! Join us for a light-hearted but deadly serious session of code golf – the challenge of writing code to solve a problem using the fewest characters possible. Exercise your own skills and collaborate with the entire group on the challenges posed. Our problems have been selected to encourage the use of recently-added language features.

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