Dyalog '12 was held in Elsinore, Denmark, from 14-18 October 2012

Programme (PDF) Materials Presentation Videos

Dyalog Presentations

(D01) Welcome! summary | video (24 mins)
Gitte Christensen, Managing Director (CEO)

Dyalog's CEO opens the conference.

(D02) Technical Keynote materials | video (50 mins)
Morten Kromberg, Technical Director (CTO)

(D03) Introducing Version 13.2
John Daintree, Chief Architect

(D04) Potential Version 14.0 Language Features summary | materials | video (25 mins)
John Scholes & Roger Hui

Potential version 14.0 language features are described: forks, merge, ?, ?, ? and ?.

(D05) Building Web Apps in Dyalog APL summary | video (36 mins)
Brian Becker, APL Tools Group Manager

So maybe this internet thing isn't a fluke after all... but writing web apps means you've got to learn HTML, CSS, SOAP, HTTP and a lot of other acronyms, right? Not so! In this session Brian will demonstrate the MiServer and SAWS, two APL-based tools that make it possible for APLers to easily develop and deploy web applications. MiServer is a web server written in APL that allows you to deliver your application to any platform with a web browser including PCs, laptops, tablets and smart phones. SAWS is the Stand Alone Web Services framework and alleviates much of the complexity of providing and consuming web services.

(D06) State-free Programming summary | video (48 mins)
John Scholes

Frazzled? Seeking serenity? Come and unwind for half an hour in the tranquil world of definitions, where nothing changes.

(D07) New SALT features and User Commands summary
Dan Baronet

Want to know about the new features in SALT and User Commands added since version 13.1? This is where you'll hear all about them.

(D08) Dyalog APL Benchmarks and Performance Enhancements summary | materials
Roger Hui

Roger describes a suite of unit performance tests followed by some performance improvements available in v13.2, and finishes with an amusing story.

(D09) Enhancements to Dyalog APL for UNIX summary | materials
Andy Shiers, Chief Operating Officer (COO)

A sight-seeing trip around some of the newer features specific to Dyalog APL on UNIX, many of which are used by TryAPL and other web-serving APL applications.

(D10) Visual Studio Integration summary
Liam Flanagan

Visual Studio is an Integrated Development Environment (IDE) developed by Microsoft primarily used for the creation of applications on Windows platforms. This presentation discusses the improvements made to further integrate Dyalog APL in the Visual Studio eco-system allowing Visual Studio users to leverage the advantages of working with Dyalog APL.

(D11) Secure, High Performance Component Files using The Dyalog File Server summary | materials | video (42 mins)
Morten Kromberg, Technical Director (CTO)

Using APL component files over a local area network is often problematic due to low bandwidth, dropped connections, insufficient control over security and poor performance of file holds and locks. The Dyalog File Server uses a client/server architecture similar to the SHARP APL or STSC SHAREFILE systems on "mainframe" computers. Because all file I/O is performed on exclusively tied files on the server, multi-user performance is improved, security is absolute and overall reliability is significantly improved. A browser-based front end allows real-time instrumentation and management of the file system.

(D12) APL & Raspberry Pi: At ARM's Length summary
Liam Flanagan & John Daintree, Chief Architect

ARM processors have been controlling our low power and embedded devices for almost 30 years. Now with the introduction of open operating systems like Android and Linux to the platform, it's quickly becoming a hotbed for software development and consumption. This presentation deliberates the findings of research into porting Dyalog APL to various ARM-based platforms.

(D13) The Story of tryapl.org summary | video (27 mins)
Morten Kromberg, Technical Director (CTO) & Brian Becker, APL Tools Group Manager

At Dyalog ’11, Joel Hough, the winner of the Programming Competition, mentioned that he had tried in vain to learn about APL by visiting tryapl.org. On Sunday evening, we will tell the story of how we responded to his challenge. TryAPL is visited every day by users spread across the face of the globe – and once had 8,000 visitors over a single weekend.

back to top


Invited Guest and User Presentations

(I14) Segmented Scans and Nested Data Parallelism summary | materials | video (54 mins)
Andrzej Filinski (Associate Professor, Department of Computer Science, DIKU, Denmark)

APL's vector-oriented programming model appears well suited for execution on SIMD-style parallel hardware, such as GPGPUs. However, some cross-element operations, such as scan or compress, appear inherently sequential because of cumulative data dependencies and even nominally independent computations, such as applying a complex (perhaps even recursive) function to each element of a vector, appear to require general MIMD-style parallelism, precluding efficient implementation on throughput-oriented, data-parallel hardware. This talk will sketch how a simple but non-trivial data-parallel algorithm for computing (nested) scans of associative functions can serve as the cornerstone of efficient, data-parallel implementations of a wide variety of seemingly non-uniform computations in array-oriented languages – obviously including, but not limited to APL.

(I15) An Array Editor for Dyalog APL summary | materials | video (42 mins)
David Liebtag (davidliebtag.com)

Dyalog version 13.2 will include an Array Editor that supports editing character, numeric and nested arrays. The Array Editor display of arrays is similar to the output of the DISPLAY function. However, unlike DISPLAY, the Array Editor supports modifying the data. Data can be over-typed and items can also be rearranged using copy, paste and APL primitives. This presentation will include demonstrations of the Array Editor and some discussion of future enhancements.

(U16) FiRe summary | materials | video (50 mins)
Kai Jäger (APL Team U.K.)

FiRe stands for "Find and Replace". FiRe offers plenty of useful features making it easy to refine a search until you get exactly what you want. FiRe's main feature, however, is the "Replace" part, which offers precise control over what is going to be replaced. FiRe is certainly helpful for any kind of programming task but is particularly useful when dealing with legacy code: improving code quality in a legacy system almost always implies search and replace, and FiRe makes this significantly easier.

(I17) Organizing Disorganization summary | video (43 mins)
Elena Paviotti (APL Italiana)

Fighting the growing chaos in a growing company.

(I18) When Excel is Not Enough summary | materials
Susie Wagner Bondorf

Two naïve and simple questions...The national education curriculum of the nursing education prescribes 210 ECTS points (European Credit Transfer System) over 3.5 years of full time study. As the newly employed Director of Nursing Studies at The Deaconess University College I asked myself the questions:
  1. Do we actually provide each student with 12 lessons a week in the specified subjects?
  2. 2. How much does each lecturer lecture?
This was indeed more difficult to investigate than I ever imagined, but Dyalog APL was a great help and I got great insight into data and information needs.

(U19) Working with Sparse Data summary | materials | video (37 mins)
Lars Stampe Villadsen (SimCorp A/S)

This presentation will illustrate some techniques used in SimCorp Dimension for representing sparse data, including the motivation for not using native Dyalog structures. The presentation will focus on storage methods, typical operations and performance and space impact for the application using sparse data.

(U20) Actuarial Applications with APL summary
Axel Holzmüller and Christiane Görges-Holzmüller (DPC Consulting, Germany)

Actuarial applications in the field of life insurances cover several business problems such as tariff and rate calculation, preparation of balance sheets or product development. In this presentation we would like to give an overview about applications and solutions in this area which are based on APL programming or include APL parts. We will provide a short introduction into the maths of a life insurance company along with the implementation of the basic functions in APL. We will highlight APL's strength and best fitness for those kind of tasks.

(U21) APL Coding Optimization for Application Programmers summary | materials
Eugene Ying (Fiserv Investment Services )

In commercial APL applications, we frequently encounter I/O functions that slow down the business applications in ways that are not obvious to the casual programmer. Similarly, many programmers do not know that they are not using the advanced computational functions properly, causing WS FULL, LIMIT ERROR and stopping or slowing down the entire business application. In this presentation, for the I/O optimization, we will take a look at how to optimize the initialization of a component file that has numeric data and how to simplify the contents of a native file that contains numeric data in character format. For the computational optimization, we will examine how to use (or avoid) the outer product, the inner product and the match functions to speed up APL application functions.

This will be a remote presentation from Jersey City, NJ.

(I22) Crackpot files and Other Stories of Forensic Mathematics summary
Charles Brenner (Forensic Mathematician )

I coined the term "Forensic mathematics" for the application of mathematical principles to evidence, in practice to problems and ideas in DNA identification. Inventing a term like this comes with certain prerogatives, including specifying the principles – the Likelihood Ratio is thereby the central concept of forensic mathematics – and of course product endorsements. Of all the tools of forensic evidence, DNA is most suited and perhaps uniquely suited to mathematical treatment. Unlike fingerprinting, its behavior nearly conforms to a tractable model and is quantifiable. Like fingerprinting it is individualistic, but in addition the inherited nature of DNA makes it useful for identification – solving crimes – via relationships.

APL has been my tool for 30 years of forensic genetic programming, mostly my software product DNA-VIEW which is internationally widely used by crime and some other laboratories. I'll review some basics of DNA genetics, a fascinating and surprisingly digital (not statistical, not analog) subject, and discuss a couple of program features. The kinship module generalizes the paternity testing question and has found wide application including in disaster zones for body identification, for inheritance and immigration, and for generating stories, some of which I would like to share.

The forensic mathematician perspective on human nature may fall short of bartender's and prostitute's, but still has a few offerings over the years. Potential illegitimate heirs and their attitudes – a common story. Suspiciousness about DNA results based on opaque science – another.

And an ambivalent story of greed: Larry Hillblom, the wealthy "H" of DHL, disappeared leaving several potential heirs and no available reference DNA. Nonetheless with a slightly novel way of thinking, DNA was able to prove the childrens' case.

(U23) Optimization of Parallel Multi-Digit Algorithms summary | materials
Andriy Tereshchenko (SimCorp A/S)

In software implementations of double-key cryptography one needs to be able to perform arithmetic computations quickly on multi-digit numbers whose length exceeds that of traditional floating point numbers; numbers with 150-200 decimal places.

Multiplication (including modular multiplication) takes most of the computational time in operations of asymmetric cryptography such as generation and distribution of a secret key, encryption and decryption of information, stacking and verifying a digital signature, etc.

In this presentation we consider how APL can be used to determine the most appropriate optimisation of multi-digit multiplication operations. The analysis of the complexity of the used algorithms of multiplication of such numbers shows that, with development of cryptographic methods of information protection with a public key, one must have a library of programs that implement various algorithms for fast multiplication – every one of which has its own area of effective application depending on the range of meaning of N (word length), computation model, hardware or software implementation. This increases the performance of double-key cryptography systems.

It is shown in comparison with other languages that APL is one of the best to model the multiplication algorithms of large numbers based on the fast orthogonal transforms (like fast Fourier transforms (FFT), fast Walsh transforms (FWT), etc.), which reduce the number of needed calculations by one or two orders. APL gives a clear picture to analyse the multi-digit algorithms and find reserves of optimization to increase performance of existing algorithms several times over.

It is known that the efficiency of multiplication of large numbers depends on the number of multiplication of single precision. The main attention is paid to APL as a tool to reduce the total number of multiplication operations.

It will be shown how APL can be used to describe parallel algorithms before implementing them using CUDA C on NVIDIA GPU, thereby reducing total time spent on development.

(U24) Three Blind Mice summary | materials
Paul Grosvenor (Optima Systems)

Over the past 2 or even 3 years, Optima together with Dyalog have been talking about introducing new people into the APL community, teaching them APL and solving all of the World's problems with a single line of code. As of August 2012 we are pleased to be able to say that we have 3 new apprentices, funded by both companies, who are now on that path of learning and enlightenment.

This presentation aims to give a little bit more insight into the process we have undertaken and also give you the ability to meet with all 3 apprentices and see what they think of it all.

Time permitting we will explore possible extensions to our initiative and see how other companies can also get involved.

See how they run...

(U25) Migrating from APL2 mainframe to Dyalog APL Windows summary | materials
Peter Simonsson, Jonas Stensiö & Lars Wentzel (ADLEPA)

We will describe two cases where we have migrated large systems from IBM mainframe APL2 to Dyalog APL Windows using two different approaches. First we will describe the systems and explain why this migration was done. We continue by describing the architecture and how we have solved the user interface (3270) and data storage. We will then describe language incompatibility problems, code and data transfer, technical components needed, tools for automatic code migration and diagnostics as well as testing. How integrations with other systems are migrated will be described. Finally we will cover the problem of migrating a living system constantly being changed and updated.

(U26) Teaching APL – Fun and Games in Hawaii summary | materials
Jerry Brennan (Jerry M Brennan PhD Inc)

I had a problem. APL solved it. I was hooked. I showed others what I could do and my career began. I think the best way to teach students APL is:
  1. Find their problem
  2. Teach them how APL solves it
  3. Help them share with others and their careers begin
I want to build a community of contributors that provides ideas and code to interest and teach new APLers. Creating and playing educational games are fun and facilitate learning. In the schools the maths/science/business curriculum needs a major computer upgrade. Computer graphical tools can make mathematics come alive and facilitate conceptual learning. With the help of APL real world problems can now be tackled by students. Creating educational games/tools on the internet is a fantastic way to share them and attract new users.

In a community, users at different levels learn from the level above and teach to the level below. If we help each other everyone benefits. I am here to learn and to give. How about joining me?

Now I want to share some examples of what I have been doing with you and hear your suggestions for going forward.

(U27) Optimisation Across Networks summary | materials
Paul Grosvenor (Optima Systems)

We are all very aware of how important it is to write efficient code and generally we write our core processing algorithms to operate as quickly as possible. What is often ignored is how applications, even well written ones, perform across a computer network.

This presentation aims to shows some of the performance pitfalls we can commonly encounter when operating across networks of unknown or unstable bandwidth.

At the end of the presentation the audience will be invited to share their experiences and strategies for avoiding some of these problems.

(U28) The Three Beaars: Basically, Every Array Allocation Reduces Speed summary | materials
Robert Bernecky (Snake Island Research)

The execution time of computationally intensive applications is usually dominated by time spent in a few kernel functions. Naive execution, common practice in interpretive array-language environments, such as APL or J, can exacerbate the performance impact of these factors, often by orders of magnitude.

In our talk, we show that the state-of-the-art array language compilation can often bring those kernels to the same level of performance as good-quality hand-coded C. In addition, the code generated by APEX/SaC automatically preserves or increases the parallelism of APL applications, offering significantly improved performance on multi-core systems with no application modifications. Finally, SaC's automatic generation of GPU-based code provides even more dramatic performance gains for some classes of array-based applications.

The speed-ups available through use of such tools varies, depending on application characteristics such as array size and the target system. To give users an intuitive feel for how much improvement their own applications could gain from use of compiled kernels, we present several case studies of applications with different array shape characteristics, along with the speedups we have attained thus far:
  • The baby bear, dominated by operations on scalars, is exemplified by the Floyd-Warshall graph theory algorithm.
  • The mama bear, dominated by operations on small arrays, is typified by dynamic programming algorithms and by numerically intense computations on complex numbers.
  • The papa bear, dominated by operations on large arrays, is typified by acoustic signal processing and geophysics benchmarks.
Our talk includes a brief presentation of the various methods by which we achieve those speedups on each class of array size.

(U29) Building an Android Application with an APL Computational Engine summary | materials
Illse Nell and Danie Maré (Riskflow Inc)

Riskflow's APL software for Cashflow Management was developed with banks and major corporates as clients. These applications were developed using APL2000's version of APL. Having identified the need for a much simpler application for use by individuals and SMEs, code was extracted from this application, converted into Dyalog APL and made available in DLL format for development of a Cashflow App on Android devices. This presentation will illustrate the App as well as details of the APL development that was required to incorporate the computational engine into the App architecture.

(U30) How I won the Dyalog Programming Contest 2012 summary | materials
Hayato Hashimoto (Kyoto University)

Hayato is the winner of the fourth edition of the International APL Programming Contest. Following the prize ceremony, he will tell us how he learned APL well enough to win the competition.

back to top


Workshops and Tutorials

(C01) Managing External Data I summary | materials
Gitte Christensen, Managing Director (CEO)

Getting your external data structure right has always been key to the success of an application. This course will present a number of ways to organise data to support the business content of an application. In addition to a theoretical discussion, the course will discuss how to implement the chosen structures using APL. At the end of the course, the participants should be able to analyse a given set of data and to choose an appropriate way to persist the data for use by an application.

Part l is an introduction to different types of data structures and the underlying theories. Typical use cases will be used by the participants to do analysis of data and design appropriate data structures.

(C02) User Commands summary | materials
Dan Baronet

User Commands are tools and utilities that are written in APL but are part of the development environment and are available in any workspace. Dyalog APL ships with many User Commands out of the box but, as the name suggests, you can also create your own. In this workshop you'll learn about existing User Commands and you'll create new ones of your own. In the process you will learn how to add command options and learn about APL's built-in search and replace operators and how to use the existing utilities to locate items in the workspace and in files using regular expressions. As a result you will have a more productive development environment.

(C03) Tuning Workshop summary | materials
Morten Kromberg, Technical Director (CTO) & Roger Hui

Making application code run faster is a never-ending process; as soon as you speed things up the users start running more simulations or transactions, data volumes increase or platform changes move the bottlenecks around. First, Morten and Roger will take you through the process of identifying hot-spots in your application using the PROFILE user command and other techniques. Next, we will discuss a number of common optimisation techniques including the use of Parallel Each to take advantage of multiple cores. Finally, you will be invited to put your new skills to work on your own application code, so please bring a piece of code that you need to speed up!

(C04) Web Applications I summary | materials
Brian Becker, APL Tools Group Manager

At the end of this hands-on workshop, you will have built your own web server application using the MiServer framework, which is included with Dyalog APL. Applications can be deployed without changes under Windows, Linux or AIX. Basic APL programming skills should be all that is required to implement a web server; the workshop will include brief (but sufficient) introductions to HTML, CSS, JQueryUI and the MiServer itself. Both part I and II of this workshop will show how to implement secure servers and services using encrypted communications.

(C05) Managing External Data II summary | materials
Gitte Christensen, Managing Director (CEO) & Bjørn Christensen

Part II focuses on relational data. We will look at different databases and their underlying technology, and the exercises will make use of SQAPL and Microsoft.Net DataTable objects to create relational tables, populate them with data and extract it again. Different methods of exchanging relational data between applications will also be discussed and demonstrated.

(C06) Namespaces summary | materials
John Daintree, Chief Architect

John will demonstrate the use of Dyalog's Namespaces from their very basic use to more complicated data and code management. The workshop will include examples and problems using the now-World-famous CD database.

(C07) Starting a New Application in Dyalog APL summary | materials
Morten Kromberg, Technical Director (CTO) & Dan Baronet

When you start a brand new application, there are a number of decisions to be made. The evolution of Dyalog APL, the platforms on which APL runs, an increased focus on server applications and the ability of source code management tools to handle APL code means that application architectures need to adapt. This workshop will be based around a discussion of the architectures of a number of applications built recently by the APL Tools Group at Dyalog, including the MiServer, the Stand-Alone Web Service framework (SAWS) and the Dyalog File Server (DFS). Topics will include:
  • Structure and organization of source code, including utility libraries
  • The choice of user interface technologies for desktop, mobile and web applications
  • Running as a Service: Process management and load balancing
  • Error and Usage Logging

(C08) Web Applications II summary | materials
Brian Becker, APL Tools Group Manager

The Web Service protocol is the lingua franca of the internet. This hands-on workshop will put you through the paces of both consuming web services written by 3rd parties from APL, and providing web services that you implement in APL. The workshop will use the SAWS framework that is provided with Dyalog APL, and allows you to call or be called by modules written in other languages, whether they reside on the same computer or have been implemented using a potentially unknown location (and on an unknown platform).

(C09) Managing External Data III summary | materials
Gitte Christensen, Managing Director (CEO) & Dan Baronet

Part III deals with the use of APL to construct databases that are customised to support different data structures. Various models for persisting relational, multidimensional and tree structures will be presented, and simple examples developed. Performance considerations will be an ongoing discussion throughout this module.

(C10) Writing testable GUI summary | materials
Kai Jaeger

Implementing a GUI with Dyalog is not exactly a difficult task. However, implementing it in a way that results in readable and maintainable code is a different matter. This workshop imparts the skills that makes is actually possible to achieve these goals. As a side effect you get a GUI that can be tested automatically.

(C11) Tuning Workshop summary | materials
Morten Kromberg, Technical Director (CTO) & Roger Hui

NOTE: This is a repeat of session C3.

Making application code run faster is a never-ending process; as soon as you speed things up the users start running more simulations or transactions, data volumes increase or platform changes move the bottlenecks around. First, Morten and Roger will take you through the process of identifying hot-spots in your application using the PROFILE user command and other techniques. Next, we will discuss a number of common optimisation techniques including the use of Parallel Each to take advantage of multiple cores. Finally, you will be invited to put your new skills to work on your own application code, so please bring a piece of code that you need to speed up!.

(C12) Secure Applications summary
Brian Becker, APL Tools Group Manager & Bjørn Christensen

Hardly a day goes past without the media discussing the theft of or unauthorised access to data. As computer systems become more connected, often using the internet as a communication mechanism or access path, it becomes less and less practical to control access to data using "physical" mechanisms like needing to be in a particular building to gain access to a system. This hands-on workshop will discuss typical situations in which you should consider encrypting data, and provide examples (and exercises) showing how the Dyalog Cryptographic Library can be used to protect your data from unauthorised access or tampering.

back to top


Copyright and Trademarks

UNIX® is a registered trade mark 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.
All other trademarks are the property of their respective owners.

back to top