Dyalog '17 was held in Elsinore, Denmark, from 10-14 September 2017
Programme (PDF) Materials Presentation Videos
D01: Welcome to Dyalog '17 summary | slides (575 KB) | video (25 mins)
Gitte Christensen, Managing Director (CEO)
Dyalog Ltd's CEO opens the user meeting.
D02: Technical Road Map: The User Experience summary | slides (4 MB) | video (32 mins)
Morten Kromberg, Chief Experience Director (CXO)
Morten presents his view of the currents that APL users will need to navigate in the years to come, and the steps that Dyalog is taking to make the journey a pleasant experience.
D03: Technical Road Map: Under The Covers summary | slides (180 KB) | video (34 mins)
Jay Foad, Technical Manager (CTO)
Jay discusses technical achievements in the latest version of Dyalog APL, new projects targetting the next release, and priorities for the engineering team for the next few years.
D04: A Case Study – Recoding from Procedural to Denotative Style summary | slides (55 KB) | video (19 mins)
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.
D05: APL Source Code in Text Files summary | slides (1 MB) | video (30 mins)
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.
D06: Py 'n' APL summary | materials (140 KB) | video (21 mins)
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.
D07: Index-Of on Multiple Floats summary | materials (1.5 MB) | video (25 mins)
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.
D08: Moving Bits Faster in Dyalog 16.0 summary | materials (390 KB) | video (31 mins)
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.
D09: Cross-Platform User Interfaces using the HTMLRenderer summary | slides (3.1 MB) | video (22 mins)
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.
D10: Tolerant Unique summary | materials (1.5 MB) | video (27 mins)
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.
D11: Literal Notation for Arrays and Namespaces summary | slides (1.5 MB) | video (28 mins)
Adám Brudzewsky
New primitives and system functions are frequently added to Dyalog APL, but extensions to the syntax of the language are rare. Adám proposes a notation for arrays and namespaces that allows definitions to be spread over multiple lines.
D12: Try APL Online summary | slides (6 MB) | video (29 mins)
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.
D13: ⎕NMOVE and Other Predictions for Dyalog Version 17.0 summary | slides (750 KB) | video (30 mins)
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.
D14: Uncle Andy's Fireside Chat v4 summary | slides (240 KB) | video (16 mins)
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!).
D15: TAO – Total Array Ordering summary | materials (1.5 MB)
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.
D16: User Command Developments summary | slides (250 KB)
Michael Baas and Adám Brudzewsky
Dyalog's user command system is under constant development. Michael and Adám demonstrate the latest additions and show how they can simplify your work. They also describe what they are currently working on to make your APL development experience even better.
D17: Prefix Agreement: A Proposal for an Extension to the @ Operator summary | slides (60 KB)
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.
U01: Patterns and Anti-patterns in APL: Escaping the Beginner's Plateau summary | slides (online) | video (59 mins)
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.
U02: RIDE 4.0 and 4.1 summary | slides (250 KB) | video (25 mins)
Gilgamesh Athoraya, Data Analytics AB (Sweden) and Callum Floume, Optima Systems (U.K.)
RIDE 4.0 was released simultaneously with Dyalog version 16.0. Gil and Callum review the most important features of the new version, and speculate about what might be in RIDE 4.1.
U03: Working with APL for Physics Research summary | slides (75 KB) | video (17 mins)
Kostas Blekos, University of Patras (Greece)
Kostas describes his experience of using APL to produce a research paper on "model making and numerical computing".
U04: APL on GPUs – A Progress Report with a Touch of Machine Learning summary | slides (2.5 MB) | video (28 mins)
Martin Elsman, University of Copenhagen (Denmark)
(Work done in conjunction with Troels Henriksen and Cosmin E. Oancea)
Martin presents a status report of the APL→TAIL→Futhark 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.
U05: Co-dfns Report 2017: Ease of Use, Reliability and Features summary | slides (online) | video (39 mins)
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!
U06: Parallel Execution in a Monolith Application summary | slides (1.5 MB) | video (30 mins)
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.
U07: Freedom Hunting: Our Search for Independence in UI Design summary | slides (online) | video (27 mins)
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.
U08: APL in SA: The Joys of Financial Reporting and Creating Libraries for Everyday Use summary | slides (1.7 MB) | video (18 mins)
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.
U09: Exploring the RF spectrum with Dyalog APL summary | slides (900 KB) | code (GitHub link) | video (36 mins)
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.
U10: Managing Projects That Never End summary | slides (1 MB) | video (25 mins)
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.
U11: Polyominoes in APL summary | materials (8 MB) | video (32 mins)
John Niss Hansen (Denmark)
In 2 dimensions, a polyomino is a plane geometric figure formed by joining one or more congruent squares edge to edge; in 3 dimensions, cubes are used instead of squares and joined side by side. In this talk, John discusses multi-dimensional polyominoes, and why APL is a good tool for not only enumerating and visualising polyominoes, but also for creating and solving puzzles in 0-4 dimensions, where polyominoes are used as pieces.
U12: Evolutionary Programming summary | materials (1.5 MB) | video (30 mins)
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.
U13a: How I Won the APL Problem Solving Contest – Introduction and Prize Ceremony summary | slides (180 KB) | video (13 mins)
Brian Becker and Carlo Spinicci, SimCorp Italiana (Italy)
The ninth annual International APL Problem Solving Competition took place earlier this year. Brian introduces the contest and grand prize winner, culminating in the award ceremony.
U13b: How I Won the APL Problem Solving Contest summary | slides (200 KB) | video (11 mins)
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.
SA1: Processing non-APL Data Files summary | materials (2.4 MB)
Richard Smith and Michael Baas
In this workshop we will import and export various forms of data encoded in text files and process their content; along the way there'll be tips and tricks and a few interesting diversions. Then we will look in-depth at importing and exporting data in native Excel (.xls and .xlsx) files
SA2: Services and Multi-Process Applications summary | materials (3.3 MB)
Bjørn Christensen and Morten Kromberg
In this workshop you will learn about tools for starting and managing multiple processes.
Keywords: Conga, APLProcess, RPCServer, Futures and Isolates, Windows Services and UNIX daemons.
SA3: Performance Tuning summary | materials (300 KB)
Roger Hui, Marshall Lochbaum and Jay Foad
The gurus are back with another round of tips and tricks aimed at making your code run faster – with special focus on features recently added to Dyalog.
SA4: SharpPlot summary | materials (38 MB)
Nicolas Delcros
Bring your own data to an introduction to SharpPlot and SharpLeaf, the graphics and publication tools that are included with Dyalog on all platforms.
SP1: Dyalog Version 16.0 Language Features in Depth summary | materials (45 KB)
John Scholes, Roger Hui and Richard Smith
A review of the new primitive language features of Dyalog version 16.0 by the people who designed and implemented many of them.
SP3: Co-dfns Compiler: Hands-on GPU programming with APL summary
Aaron Hsu (Indiana University)
This workshop will take you from zero to a completely working Co-dfns compiler installation, show you how to use the compiler, how to optimise your own programs, how to debug Co-dfns performance and execution errors, how to understand the process of running APL programs on the GPU and how to get some extra flash out of your code.
Bring your own code to the workshop if you would like to experiment with running it on the GPU – we'll have a number of example programs to work with, but we also want to provide space for anyone who wants to make their own code run fast.
TP1: A Tale of Two Web-Apps summary | slides (1.3 MB)
Brian Becker and Michael Baas
How do you build an APL-based web application?
In this workshop, Brian and Michael present the design and implementation of two production MiServer applications – TryAPL.org and the Dyalog Event Registration System.
Topics that will be covered include (but are not limited to):
NOTE: This workshop focuses on high level design and implementation. Brian and Michael do not plan to cover the basics of MiServer – members of the APL Tools Group will be available through the week to discuss MiServer and any other APL Tools related questions.
TP2: Cloud Deployment summary | slides (17.6 MB)
Andy Shiers and Morten Kromberg
Bring your own small application and at the end of this workshop you should have it up and running under Amazon Web Services and/or Microsoft Azure. Includes an introduction to running under Linux for Windows users, RIDE, and a few words about service authentication using certificates.
TP3: Code Golf Hackathon summary | slides (200 KB)
Roger Hui, Marshall Lochbaum, Jay Foad and Adám Brudzewsky
Join us for a light-hearted but deadly serious session of code golf – the art of writing the shortest code possible. Our problems are chosen to encourage use of recently added language features. You will exercise your own skills and collaborate with the entire group on the challenges posed. After an introduction to the code golf community, you may find yourself spending more time in it than your manager might like!
TP4: Mobile Development Discussion summary
John Daintree
An informal discussion about how mobile development with Dyalog could be done. Starting from last year's "Airfix" model, John leads a conversation around what's good, what's bad, and where we want to be.
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.