Home Page Register Prices Presentations Workshops Venue Directions

The programme has not yet been finalised and additional presentations will be added to this page as details are confirmed.

Dyalog Presentations

D01: Welcome to Dyalog '17 summary
Gitte Christensen, Managing Director (CEO)

Dyalog Ltd's CEO opens the user meeting.

D02: Technical Road Map: The User Experience
Morten Kromberg, Chief Experience Director (CXO)


D03: Technical Road Map: Under The Covers
Jay Foad, Technical Manager (CTO)


A Case Study – Recoding from Procedural to Denotative Style summary
John Scholes

The procedural and denotative mindsets are quite different. John hopes to highlight those differences by stepping through the translation of one style into the other.

APL Source Files in APL summary
Morten Kromberg

Most new work on APL code distributed with Dyalog APL is now based on open-source repositories, and version 16.0 includes the source for many new tools as text files which have been copied from these repositories. Morten talks about why we are doing this, how to find and load – and contribute to – the new code, and finally discusses ideas that Dyalog is working on which will allow you to easily build and test applications based on text source.

Py 'n' APL summary
Marinus Oosters (intern, summer 2017)

Python is a popular programming language with some similarities to APL. An interface between the two would enable APL programmers to benefit from being able to call libraries written in Python, and Python users could take advantage of APL to do analyses that are difficult to code or perform poorly in Python. Marinus, one of the winners of the 2016 Dyalog Problem Solving Competition, was an intern at Dyalog in July and August of 2017, and spent this time developing a Python-APL interface – Py 'n' APL.

Index-Of on Multiple Floats summary
Roger Hui

Roger presents an efficient computation for x⍳y. The solution makes key use of the new interval index () primitive, and the relatively new key operator () elucidates the classical hashing algorithm.

Moving Bits Faster in Dyalog 16.0 summary
Marshall Lochbaum

Dyalog version 16.0 features some big improvements to functions that move Boolean values around, like Reverse, Rotate, Catenate, Expand/Compress and Transpose. Marshall shares some of the secrets that make Dyalog's new versions of these primitives so fast, in particular the many tricks needed to make transposing a Boolean matrix efficient for every possible shape.

Cross-Platform User Interfaces using the HTMLRenderer summary
Brian Becker

The HTMLRenderer is a new tool for building user interfaces that can be displayed by Dyalog version 16.0 under Microsoft Windows, Linux and macOS. In a series of brief demos, Brian shows how it can be used to build a confirmation prompt, a simple data entry form, display some graphics – or run an existing MiServer application.

Tolerant Unique summary
Roger Hui

Unique () with non-zero ⎕CT is incorrectly implemented in all but one of the APLs and APL dialects that has the primitive. Roger analyses how the error came about and describes a solution (and a speed-up). He also proposes that unique be extended to higher-ranked arrays.

Uncle Andy's Fireside Chat v4 summary
Andy Shiers

Andy once again takes a look at some of the less-well announced features of Dyalog APL. He mainly concentrates on features within Dyalog version 16.0, but might mention other versions (past and future!).

Try APL Online summary
Brian Becker and Adám Brudzewsky

How do you make it easy to introduce people to APL?

Adám and Brian talk about two websites, TryAPL.org and tio.run, that allow a user with no more than a browser to use Dyalog APL online.

⎕NMOVE and Other Predictions for Dyalog Version 17.0 summary
Richard Smith

New native file functions were introduced in Dyalog version 15.0 to allow simple and portable access to the host file system. More are coming, and Richard will attempt to predict what they will be.

TAO – Total Array Ordering summary
Roger Hui and John Scholes

The extension to makes it possible to "find anything". Roger proposes that (and ) should be extended so that it can be used to "sort anything". The extension also enhances the usefulness of the new interval index () primitive.

Prefix Agreement: A Proposal for an Extension to the @ Operator summary
John Scholes

The right operand of the @ operator can be a Boolean-returning selection function. In this case, the shape of the resulting mask must match that of @'s right argument. This extension investigates allowing lower-rank masks to conform, for example, a Boolean vector result could select rows of a matrix.

back to top


User Presentations

Patterns and Anti-patterns in APL: Escaping the Beginner's Plateau summary
Aaron Hsu, Indiana University (U.S.A.)

Writing good, efficient, maintainable APL code that maximises the value of APL's design elements does not appear to coincide with traditional best practices of software engineering commonly taught at the University level of Computer Science education. This is readily apparent in the early competency plateau that new array programmers experience after they "get the basics". While learning to write good code is the journey of a lifetime no matter what language you write in, escaping a beginner’s competency in order to really understand, manipulate, and work with advanced APL programs that exhibit all the classic qualities of "beauty" ascribed to famous APL one-liners can be better understood and facilitated by addressing the disparity between best practices in APL code and best practices as they are understood in traditional Computer Science curricula.

Understanding what makes good APL code, why this matters and how it differs from writing good code in other languages can have wide-ranging benefits. Code reviews can become more targeted, coding styles can be written in a more APL-friendly way, on-boarding beginner APL developers can be accelerated and explaining APL code to sceptical non-APLers can rely less on hand waving and appeals to nebulous, ill-defined concepts.

APL on GPUs – A Progress Report with a Touch of Machine Learning summary
Martin Elsman, University of Copenhagen (Denmark)

(Work done in conjunction with Troels Henriksen and Cosmin E. Oancea)

Martin presents a status report of the APLTAILFuthark compiler, which compiles a subset of APL into code executable on GPUs. The compiler handles quite a number of APL functions and operators and is, for the subset of APL it supports, highly compatible with code written for Dyalog APL. As well as reporting on the performance of a number of APL benchmarks, he demonstrates, by example, how the APL compiler tool chain can be used to efficiently teach a neural network to recognise handwritten digits.

Co-dfns Report 2017: Ease of Use, Reliability and Features summary
Aaron Hsu, Indiana University (U.S.A.)

The Co-dfns compiler has made significant strides to improve usability, reliability and the feature completeness of the compiler – in this talk Aaron focuses on the status of feature-completeness and improvements to the installation, configuration and usage. He gives specific instruction on understanding errors and debugging issues with the compiler as well as providing a set of guidelines for writing high-performance APL code with Co-dfns, explaining how the performance model of parallel computation differs from the performance model of the interpreter when writing code. This will help anyone who is writing Co-dfns programs to understand how to optimise code to best run on the compiler.

Time permitting, a bit of flashy demo time might also be in the works!

POGO: POlyhedral Guard and Relational Function Optimisations summary
Robert Bernecky, Snake Island Research (Canada)

According to CERT, about half of all computer intrusions are the result of undetected violations of array operation conformance rules, such as index error, typically in C or other scalar-oriented imperative languages. Users of interpreters for functional array languages, such as APL, are largely immune to these woes, because interpreter implementers ensure that each primitive performs those conformance checks during execution, albeit at some cost in run-time performance. Developers of compiled languages, including those for functional array languages, may not provide conformance checks, or may make them optional, in the interest of improved performance, at the cost of substantially degraded security.

The POGO project attempts to provide safe execution with little or no performance loss. Robert shows the run-time costs of providing naive checks in the compiled APL APEX benchmark suite. He then compares two methods of safely removing a subset of those checks. One method uses ad hoc, local optimisation techniques; the other, POGO, uses optimisations based on inter-procedural analysis and the polyhedral model.

POGO-based algorithms should be widely applicable in both JIT and traditional functional array language compilers.

Parallel Execution in a Monolith Application summary
Lars Villadsen, SimCorp (Denmark)

Assuming that you have all the time in the world and no customers then you would probably be able to get your application designed to run in parallel fashion with well-defined components and clear interfaces between components – but what do you do when this assumption does not hold?

Lars gives an introduction to the way in which SimCorp tries to utilise the power of the modern PC HW and use more than one CPU and still work within the boundaries set by a 25-year-old application.

Freedom Hunting: Our Search for Independence in UI Design summary
Annalisa Camillo, SimCorp Italiana (Italy)

Over a few decades, our application (SOFIA) has run on different operating systems, moved from one APL interpreter to another, and experienced dramatic changes in user input/output technologies. We have worked hard to abstract our designs from hardware contexts, to free screen design from rigid bonds, and to dream up adaptive screens using a dynamic approach.

APL in SA: The Joys of Financial Reporting and Creating Libraries for Everyday Use summary
Zack Batik, RiskFlow (South Africa)

Banking in Southern Africa has a heavy focus on regulatory reporting. Reading substantial amounts of data, doing a little bucketing and some simple sums is the game. After writing three import routines in three months or manually exporting 100 .dlls in a day it becomes apparent that there must be a better way.

Having generalised tools to handle common tasks allows for more time spent on the interesting side of coding. Furthermore, having access to open source tools and libraries has become the norm for most popular languages but is not as readily available in APL. Zack discusses the motivation for, and application behind, several open source tools that he has developed.

Exploring the RF spectrum with Dyalog APL summary
Moris Zucca, SimCorp Italiana (Italy)

In the last decade, low cost devices capable of receiving raw data in a wide range of frequencies have become commonly available on the market. Software Defined Radios (SDR) are now widespread, replacing components that are traditionally implemented in hardware with software. Moris explains how it is possible to connect the Dyalog APL interpreter to those devices and to receive and convert the radio signals using APL.

Managing Projects That Never End summary
Alexey Miroshnikov, InfoStroy Ltd (Russia)

For many years, we were a small team with deep insight into subjects we had worked on together for a very long time, and minimal internal communication requirements. As we added less experienced team members and the number of parallel projects grew, we realised that we needed tools to help us manage our work – but "traditional" project management tools didn't feel very comfortable.

This is the story of how Alexey discovered the JIRA framework from Atlassian and came to understand that Agile project management was exactly what he was looking for.

Evolutionary Programming summary
Gilgamesh Athoraya, Data Analytics AB (Sweden)

Nature is beautiful and complex, so it is not surprising to see so many attempts at mimicking nature when looking for a solution to a problem. Artificial neural networks have been successfully implemented to interpret images and other signals.

Evolutionary and Genetic Programming is using the principals of biological evolution to find a solution to a problem. A population of genetic code evolves through generations of reproduction and mutation until an individual is produced that is particularly fit for the problem at hand.

Gilgamesh presents a study of Evolutionary Programming using function trains as chromosomes and isolates to parallelise the evolution of the perfect train.

How I Won the APL Problem Solving Competition summary
Kostas Blekos, Panepistimion Patron (Greece)

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

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