The 2026 round is now open. The winner of the 2025 round has been announced.

The APL Forge

Previous Winners

2025 Winner: Borna Ahmadzadeh

“I’m a computer science student in Toronto, Canada working towards my bachelor’s degree at York University. Although my experience primarily lies in machine and deep learning, I’m also very curious about theoretical computer science and language design, leading me to explore different programming paradigms, including array programming – more specifically, APL – just over a year ago. APL held a double interest for me: It was very different from the object-oriented and functional languages I was used to, and it demanded a completely new perspective on programming (data-parallel operations, no branches, and so on). At the same time, it struck me as a more elegant tool for conveying concepts and ideas that scientific computing frameworks in languages like Python could only awkwardly express. I was particularly keen on this point because machine learning tasks regularly deal with complex multi-dimensional arrays, and APL seemed like an appealing alternative to the currently Python-dominated landscape.

“My first experiment in this area was trap, an implementation of transformers (e.g., GPT) in APL. I was surprised by how concise the code was compared to the Python reference, even though the latter wasn’t written from scratch, instead utilising the deep learning package PyTorch. To take trap a step further, I started to implement more traditional machine learning models such as linear regression and support vector machines in APL, forming the basis of APLearn. Transformers are conceptually straightforward since they are, in terms of concrete implementation, little more than a sequence of matrix multiplications. On the other hand, machine learning algorithms are often trickier, relying on more than just basic linear algebra. For example, random forests depend heavily on trees, and Lasso regression is solved using an iterative, non-parallel approach called co-ordinate descent. This created difficulties at times because it wasn’t always obvious how to translate, say, ifs or for loops into APL, and I had to actively force myself to avoid falling back on a more standard, imperative mindset. During this time, I maintained a correspondence with Aaron Hsu, the developer behind the Co-dfns APL compiler, concerning performance improvements, and he encouraged me to submit my projects to APL Forge.

“In the future, I plan to study array programming in greater depth, with a focus on machine/deep learning. I believe APL is a viable tool for quickly and succinctly solving many computational problems, especially in research, and I hope I’ll have the opportunity to take advantage of the many benefits it offers in my work.”

Borna will present his winning work on APLearn at Dyalog ’26.

Links: APLearn on GitHub

2024 Winner: Holden Hoover

“I am a high school student in Nova Scotia, Canada, and am about to start my final year. My journey with APL began at the age of 12, thanks to an introduction by family friend Robert Bernecky. Since then, APL has been an important tool in my learning journey. It has allowed me to quickly develop concise solutions for many of my classes, especially in Physics and Mathematics. Looking ahead, I plan to pursue a university degree in computer science, where I intend to continue using APL for research and application development. I am particularly interested in exploring the intersection of APL with machine learning. 

“I decided to enter the APL Forge when I heard Stine Kromberg talking about it on the Array Cast podcast. I was encouraged by friends to enter, mostly to gain valuable experience and have a motivation, rather than the competition itself. 

“I submitted an application called Radar Ingest System. This system is designed to ingest, process, and aggregate raw ADS-B data from multiple antennas. ADS-B (Automatic Dependent Surveillance-Broadcast) is a radio protocol that allows aircraft to communicate essential data – such as callsign, position, speed, and altitude – with ground stations. My application processes this raw data to create a database of airborne aircraft. This database could then be utilized by other applications, including REST APIs and GUIs, to visualize and display the data effectively. I had been wanting to do this project for a very long time, having tried to do it in JavaScript with no luck; when I was trying to do it that way, I spent more time trying to figure out libraries and minor bugs than programming the actual program! While doing this project, I learned a lot about how to use Conga and Jarvis, but I also improved my fluency in the language.” 

Links

Share this page:

X
Facebook
LinkedIn
Reddit
WhatsApp
Email

If you have any questions, please contact us on forge@dyalog.com or send us a message