Dyalog ’23 Day 2: Looking Into the Future

The weather improved today – the sunshine was a refreshing feeling as we awoke to a new day of forward-thinking presentations.

As usual, we began with Gitte Christensen’s welcoming address in which she spoke of the exciting new growth happening at Dyalog Ltd. Five new employees have joined since we met in Portugal last year for Dyalog ’22, addressing our increasing needs for tools, administration, IT support, testing, and marketing. In addition, approximately a quarter of the delegates at Dyalog ’23 are attending for the first time. However, we also said goodbye to Geoff Streeter, one of the original implementers of Dyalog, as he retired this year (read about Geoff and his charity work in this blog post “Not All Heroes Wear Capes”). Gitte herself is stepping down from managing the company at the end of the year, and has been spending the last couple of years training her replacement as CEO, Stine, to take over in January 2024.

Gitte Christensen welcomes us to the user meeting for her last time as CEO

There are two large projects that Gitte has been championing before her retirement. The first is the formation of the APL Trust Fund – a charitable foundation to enable individuals and companies who have enjoyed and benefited from APL to pay it forward with a fund dedicated to science and technology research, and in particular that which can help promote the use and development of APL. The second is a new website for Dyalog Ltd, which is progressing well; she showed us a preview of the home page and a searchable library of APL videos.

Morten Kromberg then presented his insight into what this rapidly growing team is up to. After reflecting on the milestones of historic Dyalog development, such as the introduction of namespaces and the Win32 GUI interface, he talked about many of the ongoing projects that will be presented this week as well as his hopes for version 20.0 and beyond. For example, Dyalog on 64-bit ARM processors, academic collaborations in quantum computing, metallurgy and teaching; tools for asynchronous programming; package management; performance improvements, an application health monitor, and much, much more.

Morten Kromberg gives an overview of new development work happening at Dyalog Ltd

Next, John Daintree presented an update to the so-called Token-by-Token (TBT) Tracing – or is it primitive debugging? or should it be called “Bit-by-Bit Poking”?! The ability to do fine-grained tracing function-by-function within expressions clearly has incredible potential for development, teaching, and learning APL. Those with a tacit aversion can see exactly how derived functions and trains are executed, and everyone can benefit from seeing the values of variables in the debugger as expressions are traced.

Then Adám Brudzewsky presented his ideas on how to address a range of issues when you want to assign a variable but the name itself is variable – this is often a problem when using namespaces as dictionaries, for example. Although possible, he showed how incredibly unwieldy it currently is to do this with good performance. He proposed system functions for getting name-value pairs (⎕NV), getting a name (⎕NG) and setting a name (⎕NS). If you recognise the last one, luckily his proposal is a consistent extension of the current ⎕NS system function.

Peter Mikkelsen had another system function proposal as he elucidated current issues with the way we call shell commands from Dyalog with ⎕SH and ⎕CMD. His proposed new system function might include features such as whether to error on a non-zero exit code and ways to redirect input and output. This proposal is quite concrete, and if all goes well it might see its way into version 20.0.

Acknowledging that it might be of little interest to some users and yet deeply fascinating for (and requested by) others, Richard Smith gave us a privileged view into the technical content of the workspace and how memory allocation works. Essential viewing for users concerned with performance, the “pocket allocation algorithm” shows what really happens when a WS FULL error occurs.

John Daintree and Richard Smith discuss the internal workings of the interpreter

Furthering the discussion of interpreter performance, Karta Kooner continued the analysis he presented last year of the performance of set functions that use search algorithms, such as membership and index-of . His heat maps of performance using different data types with arrays of sizes ranging up to 1,000 or 20,000 elements, showed v18.0 having unexpected degradation in many cases. Of course, it is significantly faster in some cases, so Karta intends to address the algorithm selection issues and then re-introduce successful algorithms from v18.0.

On the topic of concurrent programming, Stig Nielsen of SimCorp demonstrated using .NET tasks to implement “APL Worker Bees”. By exporting an APL class as a .NET assembly, a main APL process can be used to control many interpreters working in parallel across all of the cores of the machine. In contrast to isolates, these are several APL interpreters running in the same machine process, which Stig needed when migrating his specific application to the cloud.

Mark Wolfson

Mark Wolfson returned to the stage after his fascinating presentation last year in Portugal to talk about his efforts streamlining a complex data processing and analysis pipeline. Previously, he had used C# tools to ingest data from over 40 different software systems used by U.S. jewellery retailers and some APL “black boxes” to normalise the data. He has been able to replace all of that with Dyalog tools, allowing him to rapidly make changes that previously took days, weeks, or months. He has also shown these tools to members of his C# team and said that they really resonated and he now has C# programmers wanting to learn APL! Mark urges the APL community to promote APL as an excellent “glue” language to bind together the already-familiar tools used by programmers.

Kai Jaeger

Of course, the APL world still needs its own tools. Kai Jaeger has been developing the APLTree library for many years. We saw a brief history of Kai’s library of tools before he provided an update, including the move to make them available on the Tatin package manager that he has been developing for Dyalog. There was news of specific updates to packages such as FiRe (Find and Replace), which is a tool for searching and replacing within code and names in a Dyalog workspace, and the addition of new packages for reporting code coverage during testing, an FTP client, accessing the GitHub API, and using SMTP for email. He also introduced the Launchy application, which is useful for users when starting Dyalog when they have multiple versions installed.

In the last talk of the day, Morten shared the status of package management in Dyalog more broadly. In exciting news, he demonstarted how the Cider project manager now supports adding both Tatin and NuGet dependencies to an APL project, making it easy to use the dozens of APL packages or hundreds of thousands of .NET packages.

After dinner we were treated to some light entertainment in the form of a remote presentation by Ray Cannon, who has been experimenting with synthesising music from APL. Hearing the development of sounds from simple sine waves through to added overtones creating a fairly convincing organ was quite fascinating, and the synchronised animation of falling piano keys to J.S.Bach’s Toccata and Fugue in D minor was magical.

Today’s presentations:

Dyalog ’23 Day 1: Welcome to Denmark!

We have returned to the (very windy this time!) shores of Elsinore in Denmark for our annual user meeting, Dyalog ’23!

Today saw the usual range workshops in which everybody could get involved learning the intricacies of a range of topics with the support of experts from Team Dyalog and friends.

In the morning, users in part 1 of the Projects and Packages workshop started consuming APL packages using the Tatin package manager. While many existing users have gone decades without these very convenient additions, we see packages as an important part of APL’s future.

In the Tacit Techniques workshop, participants learned the basics of function composition operators and function train syntax. They practised spotting patterns to make explicit code more succinct, and even those who only started using APL earlier this year had great success converting explicit functions into those that do not mention their arguments.

Meanwhile, users who wanted a challenge tackled an advanced workshop focussing on common pitfalls when writing code that performs well.

Projects and Packages workshop with Morten Kromberg, Kai Jaeger, and Gilgamesh Athoraya

In the afternoon, we hit the rate limit on the GitHub API during the session on web services, as presumably everyone on the venue’s Wi-Fi network had the same I.P. address! Fortunately, after each user successfully configured a web service on their own machine, everyone could experiment as much as they wanted to.

In part 2 of the Projects and Packages workshop, participants managed to publish their own APL packages to the Tatin test registry for others to use. Now that they’ve had a taste, we hope to see more become available on the main Tatin registry in the future!

The development masterclass took participants through some basic and some lesser-known features of Dyalog’s Integrated Development Environments. Some newer APLers said that they learned a lot, and even more experienced users said they had benefitted and would take the materials back to their organisations to share with others.

Adám Brudzewsky and Stefan Kruger host a masterclass on the features of the IDEs

Conversation over dinner included catching up with long-time friends and making new ones, stories of onboarding new APLers (some of them in attendance), and hearing about personal and professional achievements of the last few years. There’s excitement in the air this evening, and we can’t wait to start a fantastic few days of presentations tomorrow!

Welcome Stefan Kruger

Stefan Kruger recently joined Dyalog Ltd from IBM, where he worked on distributed databases for many years.

Stefan spent a long time at university doing research in signal processing; after that he worked in several start-ups that were closely tied to the academic world. Then, taking a step away from technology for a while, Stefan pursued his interests in climbing and skiing, chasing winter around the globe until the money ran out.

Once safely back in gainful employment, Stefan set himself a goal of learning a new programming language each year, favouring those that are less mainstream…”the weirder, the better!”. This path has led him through such languages as Zig, Clojure, Elixir, Racket, Haskell, and many more. Once he discovered APL he was hooked. Recognising the need for more accessible resources while learning APL, Stefan wrote Learning APL, an introductory book for programmers familiar with other languages; he also edited together APL Cultivations, which covers most aspects of basic APL programming as well as some more in-depth lessons.

Stefan lives in Bristol with his wife Sarah, two cats, one dog, and n+1 bikes. He enjoys back country skiing in arctic Scandinavia or Canada during his winter holidays. In the summer, he stays active by road biking, especially climbing the classic cols in the Alps — strictly “type 2” fun.

We’re glad to have Stefan on board at Dyalog Ltd; his background and drive for continuous learning should be a positive contribution to our team, and we look forward to seeing his contributions to the APL community.

Employee Spotlight: Peter

This week marks the first anniversary of Peter joining Dyalog Ltd. He is one of the newest additions to Team Dyalog and we couldn’t be more excited for his future here. We were able to pry him away from the interpreter to catch up with him and see what his time has been like so far.

Peter joined Team Dyalog after studying at Aalborg University, where he received his Bachelor’s degree in computer science. APL made an impression on him when he heard about it in 2021; he found it fresh and pleasantly new. APL (and Dyalog APL) were different from other programming languages he had dealt with.

Most days Peter is deeply involved with Dyalog’s interpreter; he improves it by implementing cool new features and fixing any annoying bugs. Peter really enjoys the affable and cooperative culture here at Dyalog Ltd, “It is a very friendly crowd, and everyone is willing to help me with whatever issue comes up.” He also enjoys his role in the development team. He finds it challenging and fulfilling to work on issues that require him to look at and understand a part of code that he hasn’t seen before…it’s like solving a puzzle for him, and when things start to ‘click’ he gets really motivated because he knows, “that the system is becoming more and more robust with every bug fix.” Peter’s role requires a lot of critical thinking, “I think the most important skill is to be able to navigate and make sense of old code on your own.”

When he’s not improving the heart of Dyalog, you can find Peter spending his time outside! (I know, shocking for a programmer!) He enjoys scenic walks in the picturesque nature local to him in Denmark, which is a huge juxtaposition from staring at screens for a living.

Peter is a great addition to the team, and we wish him all the best on his one-year anniversary at Dyalog Ltd.

Welcome Jada Andrade

Jada moved to the United Kingdom in 2015 to pursue a degree in law with politics at the University of Manchester. On graduation she relocated to Reading in the south of England, where she took on various temporary positions in administration during the Covid-19 pandemic.

Jada first heard about APL when her partner, Rich Park, joined Dyalog Ltd in October 2018. Since then, she has attended various Dyalog Ltd events as a guest, including Dyalog ’19 and Dyalog ’22, and found the enthusiasm and passion of the APL community infectious, despite having little to no experience in computing. Attending these events left Jada with a very positive impression of Dyalog Ltd, particularly with the logistical planning and administrative organization evident from the smooth running of each event. She was also in the unique position of being able to interact with Dyalog Ltd employees prior to joining the company, fostering good relationships through casual communication.

Therefore, when the possibility of joining Team Dyalog as an administration assistant and office manager was brought up, she immediately jumped on the opportunity and officially joined the company towards the end of March 2023. She hopes to lessen the current workload of the administration team, and enjoys the varied nature of her role as she gets to explore legal, finance, customer relations and office management tasks.

Outside work, Jada enjoys improving her running skills, taking long walks in the bountiful nature of Berkshire, occasionally canoeing, discovering cool Japanese manga, and making delicious dishes in the kitchen.

APL Seeds ’23: Wednesday 22 March

Pie chart of APL Seeds '23 registrant prior knowledgeLast Wednesday we hosted APL Seeds ’23, the third of our free online user meetings aimed at new and prospective users of APL. In attendance was a mix of new users and the APL-curious, as well as more experienced APLers answering questions and imparting wisdom in the chat and during the post-event meetup.

Rich Park began the meeting with an introduction to the basic syntax of the language and a sample solution to a problem from last year’s APL Problem Solving Competition – from data about the schedule of an online event, and the times people joined the event, which sessions did each user attend? He demonstrated how the thought process of a solution could map neatly onto an executable APL expression. In particular, he showed how an elegant solution tends towards using primitives directly with array argument values, as opposed to abstracting the solution for one piece and explicitly looping over the collection.

Adám Brudzewsky then explored how to remember unfamiliar ideas. He presented some mnemonic devices linking the glyphs that make up the core APL language with both the concepts that they represent and their locations on the APL keyboard. Whether they are two related concepts represented by the same symbol, or if the dyadic form is the same as monadic with a default left argument, or if two unrelated functions use the same glyph, these tricks are really useful for memorising the fundamental building blocks of APL.

Screenshot of Adám Brudzewsky's presentation

A still screenshot doesn’t do justice to the wonderful animations in Adám’s presentation.

We then heard about learning APL from the perspective of a non-programmer. Richard Savenije is a project director for infrastructure projects in a construction company. After a stint of programming in C at IBM, Richard decided he did not want to pursue programming any further. When he left, he took an APL manual with him, as he had been intrigued by the glyphs. It sat untouched for 28 years, until he recently decided to start learning to solve problems with APL. He told us about the new perspectives he has gained while using APL, and parallels with the type of problem solving he does in his day-to-day life.

APL media often shows the symbols, interesting approaches to algorithms, and other ways in which APL is fascinatingly unique in the world of programming languages. However, this often leaves people wondering whether they could use this in the more pedestrian tasks of automation, data processing, and application development. The final two talks of the day addressed the more practical use of APL.
You might have heard Stefan Kruger’s name before – he wrote the excellent Learning APL book and gave a presentation at APL Seeds ’22. He acknowledged that the domain of APL is largely seen as “super tight” numerical algorithms and array transformations. This year he explained the convenience of HttpCommand and ⎕JSON for ingesting data from external sources, and explored the creation of user commands to provide a convenient interface for performing repetitive tasks. Stefan used these to rewrite a substantial collection of (mostly Python) utility scripts as APL functions and user commands, ultimately shrinking the code by a factor of 10!

Screenshot of Stefan Kruger's presentation

Stefan shows us how to construct user commands to conveniently perform repetitive tasks.

In the final presentation of the day, Josh David answered the question of “what does it look like when my APL Seeds come to fruition?” He began with a demonstration of some analysis of water potability data that turned out to look dangerous – or fake. Throughout his demonstration, we got a feeling for how to rapidly inspect and transform data to gain insights. He included plenty of very useful tips for new APLers, such as how to stop the stream of text into the session when you execute an expression that produces long output (Action > Interrupt in the Session menu…there are more tips like this on our website). Finally, he showed some full-stack graphical applications – his SQL-Browser and The Carlisle Group’s FlipDB – with examples of database connectivity, querying and analysis.

After the talks, there was an informal online meetup. This included lively discussion about many topics, including language design and terminology. We also discussed questions about teaching tacit programming, and heard perspectives from some APL beginners – if someone is learning the concept of functions for the first time, then composition of functions is probably not appropriate at that point.

We hope we were able to spark interest, give some clarity to people’s image of APL, and inspire you to start or continue learning and using APL. Relevant materials have been uploaded to the APL Seeds ’23 webpage, including links to recordings of the presentations on dyalog.tv.