Last week the Tavern Room at the RSA in London played host to a free one-day seminar put on by the British APL Association. A gathering of nearly 30 APL enthusiasts attended and enjoyed the talks by several presenters. The day kicked off with a welcome speech by the current chairman of the BAA, Paul Grosvenor. He was delighted to see a good turn out and ensured a fun and informative day was to follow.

File Functions in Dyalog 15

The first technical lecture was by Richard Smith from Dyalog who was showing off new in-built file functionality of the latest Dyalog APL interpreter (v15.0). The audience was impressed with the ease Dyalog had added to previously tricky tasks. The new functions also represented an important step to becoming more cross platform friendly as Richard revealed they would work with the majority of major operating systems. Some of the impressive new features included:

  • Intelligent encoding method for new and existing files.
  • New functions for writing and reading native files.
  • Information gathering functions.
  • Platform independent code, allowing functions to be used on most major operating systems.

At the end of the presentation there were a couple of questions regarding file operations such as copy, Richard said they would be considered for development but for now just use the available tools. He then ended his speech on a completely unrelated note saying that an I-Beam for changing the case of character vectors: 819⌶ would be available in v14.0 and v14.1 of the Dyalog APL interpreter.
A more comprehensive list of changes to the file functions you can check the online manual: http://help.dyalog.com/15.0/

Richard’s presentation can be viewed below.

Git in The APL Room

Second to present was Stephen Taylor with a talk on how he has tried to initiate casual ‘office style’ communication without being in an office environment. Stephen, who works from home, explained how he misses the casual nature of conversations he used to be able to have in the office and wanted to find a way of joining together APL developers to try to recreate the conversation style he desired.

Stephen and Gil Athoraya started the process off by using a team communication platform called Slack. The idea was they would use this along with their mentees to discuss APL topics and troubles. The Slack room adopted the name “The APL Room”.

Over time the Slack channel evolved and has now become an active area for APL developers to discuss a variety of different topics. To join, all you need to do is send a message to Gil’s email requesting you be added.

The second half of the talk comprised of Stephen detailing his experience with using Git for source code management with a short demo showing how to use a small set of command line tools. Once Stephen had finished there was a question about GUI tools for using Git and Morten Kromberg quickly sprang to the stage to show off a piece of software he had been using called Source Tree.

To find the guide that Stephen used for Git and to find out more visit: http://rogerdudler.github.io/git-guide/

Stephen’s presentation can be viewed below.

Pi for Brains

Romilly Cocking gave a short talk on Artificial Neural Networks and the work he had been doing with them in APL on a Raspberry Pi Zero. He detailed that he would be blogging about his experiences and welcomed collaboration for working on a new framework.

You can read Romilly’s blog here: http://blog.rareschool.com/

Rommilly’s presentation can be viewed below.

Moving APL, WPF, and XAML to the web

Michael Hughes was keen to show how he had built web applications using tools to convert code written in C#. The tools used would take a WPF application and break it down into XAML, JS, and HTML counterparts. This could then be hosted as a web application.

Michael also explained how he had used reverse proxies to pass WebSocket requests to a modified version of MiServer which included WebSocket support built in by Gil Athoraya. This link allowed him to alter variables from his Dyalog interpreter and have them reflected in real-time on his web front end.
Michael posed this approach as a good way of taking APL code to the web and incorporate a bidirectional data bind.
You can find more about the tool Michael used for converting C# code here: http://www.cshtml5.com/

Michael’s presentation can be viewed below.

Blowing Raspberries

Ray Cannon was up next for a quick demonstration of how he had used APL on a Raspberry Pi to create different sounds using an old computer buzzer. He explained he used files to interact with output pins and send messages to the buzzer.

Ray also graced the audience with a look at his Pi robot which was able to follow the left hand edge of the room. All of which was written in APL.

A Memo Operator

The topic of Roger Hui’s presentation was inspired by a film called “The man who knew infinity” which is about two brilliant mathematicians. He had been invited to go and watch it with his colleagues at Dyalog. Nick Nikolov later brought up a related paper written by Stephen Wolfram called “Who was Ramanujan?”. In the paper Stephen proved that the Wolfram language could calculate the partitions of 200 instantaneously (the result is 3,972,999,029,388). Roger saw this as a challenge to implement in APL.

Roger gave a demonstration of calculating the partitions of a much smaller number using recursion in APL. The result was very slow execution. And it was calculated that in oreder to process the partitions of 200 using that method you would need to run the expression for 4.15E34 years! This was obviously not a practical solution.

Instead Roger wrote an operator which he called the “Memo” operator. This allowed him to keep track of previous results when executing recursive functions. It looked something like this:

When Roger used the operator in conjunction with his partition function he was able to compute the partitions of 200 instantaneously, just like Wolfram. In terms of speed ups, shaving 4.15E34 years off an expression has to be some kind of record!

Roger’s presentation can be viewed below.

Markdown, MarkAPL and Everything

Kai Jaeger stepped up to give a presentation on Markdown. He gave examples of its use and detailed some tools one could use to work with it. He explained there were different implementations of markdown and there is hopefully soon to be an official web standard.

Kai went on to describe his experiences trying to implement a Markdown compiler in APL. He recalled himself thinking it would be a straightforward exercise and instead finding it to be quite the challenge. Nevertheless, Kai implemented a Markdown to HTML compiler in APL.

Kai’s presentation can be viewed below.

The APLNext Supervisor for Multi-Threaded Processing

Last to present was Jairo Lopez who based his talk around multi-threading. He detailed the intricacies of his task and what needed to be synchronised in order for the process to complete in the correct order.

Following his explanation, he gave a live demonstration of how he used ActiveX objects in combination with APL+Win to create a synchronised multi-threaded application. He called the main controller of the separate threads the “Supervisor” and used this to make sure each thread was in the correct stage of execution. This sparked a lot of conversation afterwards as to how other APL developers had implemented their own multi-threaded solutions.