Tools Architect Brian Becker started today’s presentations with an overview of the tools provided by Dyalog Ltd. to help develop applications. He also explained the plans to improve documentation and tutorials and have more comprehensive testing, especially as our tools are supported across different platforms, architectures, and deployment scenarios. He then demonstrated use of HttpCommand to issue HTTP requests to web services, and announced the new WebSocket Server that he has been working on to facilitate asynchronous communication between Dyalog and non-APL applications.
Finn Flug presented a project recently undertaken to migrate a service created with APL+Win into a Jarvis-based web service with a browser-based user interface – he had some very useful advice on thread-safe error handling and implementing logging when deploying with containers because the containers disappear if the application crashes. To his satisfaction, he found that working with Dyalog tools allowed him to drop existing code into Dyalog, make a few minor tweaks, and discover that everything just works.
Ron Murray gave a demonstration of the results of his work migrating Dyalog to run on 64-bit ARM processors. He showed Dyalog running on a Raspberry Pi 4 as well as an Amazon ARM chip on Amazon Web Services (AWS). Of course, for the APL user on the new platform, it’s just APL and it works just the same.
Claus Madsen then discussed his financial application, which is deployed on AWS and needs constant up-time. He gave us a glimpse into his architecture: launching processes that log calls to the application so that when a customer reports an issue they can replicate the function calls exactly. Finally he demonstrated his continuous integration deployment workflow.
Elena Paviotti and Gianna Folladore of SimCorp Italiana entertained us with various experiences they have had when working with files and with people using files. This included problems such as when you ask for a CSV file but a naïve user has renamed a Microsoft Excel file – it looks like a CSV when opened in Excel, but is complete nonsense when imported as text! Regional settings for dates and numbers also provide a challenge, so dealing with these types of issues takes curiosity, collaboration, patience, and even more patience.
With an exciting new application, newcomer to APL Marcos Frenkel presented an introduction to the weird world of quantum computing. The current state of quantum programming languages are very implementation-specific, so he and his team from the University of Illinois are exploring APL as a high level way to express quantum algorithms. His representation of states as 1-column matrices and gates as square matrices allows application of gates to states to be simple matrix multiplication (+.×
), which is natural and easy to explain to colleagues in the field.
The buzz of excitement at new scientific research with APL continued as Jesús Galan Lopez gave us an update on his investigations in metallurgy. He expressed how, in research, usually scientists are themselves the developers and they simply want to know “can APL solve my problem?” He has been pleasantly surprised by the reception to APL when he has talked about it to “whoever will listen”.
One of our two interns from this summer, Asher Harvey-Smith, described the work that he did during his internship; he started by implementing an extension to import data from text files as character matrices, then he addressed some issues in the Jupyter kernel that he found while writing some notebooks to teach linear algebra to other students at his university. Since returning to University he has seen great benefit to teaching an already familiar topic re-framed with the APL notation, and he anticipates a great opportunity using APL in that way for teaching in the future.
Reflecting Mark Wolfon’s message yesterday, Stefan Kruger demonstrated an interface between Dyalog and Kafka, a publish-subscribe message streaming platform for managing inter-process communications in complex systems. In a modern, distributed, micro-service landscape, it is often the language of choice and, as Stefan sees it, if Dyalog can talk to Kafka then it can talk to anything that Kakfa talks to.
One issue raised in Stefan’s talk was that he had to leave APL and write a thin wrapper in C# to talk to the .NET Kafka client. John Daintree explained that this is because of a feature of C# called “generics” – generic methods and classes. If you live in C# world you probably already know about generics, and if not then you just might benefit from some awareness as many .NET packages in NuGet are only accessible using generics. Today that might require some C# code, but soon it will be all possible from APL.
When using the key operator (⌸
) to do things with grouped data, it can be awkward to deal with absent values, sort the result, or query only a subset of the data. Adám Brudzewsky’s proposal for an array left operand that specifies the “dictionary” to key addresses all of these issues. The main issue currently is that this derived function returns a nested vector of grouped items, and the user must then apply their function on each grouping, but he had ideas on how to recognise and optimise this pattern.
Uncle Andy (Shiers) returned to the fireside (with great effect thanks to Jason!) to tell us about some of the backroom processes and lesser-known features and aspects of Dyalog. While a heartfelt goodbye to Geoff Streeter (who retired earlier this year) was garnished with a story about his erratic driving, we got some very useful advice about making lightweight Dyalog docker containers by removing help and sample workspaces. We also learned that 819⌶
is being removed in version 20.0 (use ⎕C
instead!) and that version 19.0 will be the last version produced for intel-based macOS. He also introduced us to the new QA dev, Aarush, who we all had the pleasure to meet for the first time in person this week!
Today’s presentations:
- D09: Dyalog Tools Update – Brian Becker
- U05: Converting a COM Server to a Jarvis-based Web Service – Finn Flug
- D10: Running Dyalog on ARM64 Machines – Ron Murray
- U06: Dyalog, AWS, Jarvis, Docker…What’s Not to Like? – Claus Madsen
- U07: Once Upon A File – Elena Paviotti and Gianna Folladore
- U08: quAPL – A Quantum Computing Library in APL – Marcos Frenkel
- U09: APL and Metallurgy – Jesús Galán López
- U10: Teaching Linear Algebra with APL – Asher Harvey-Smith
- D11: Dyalog + Kafka = True? – Stefan Kruger
- D12: Dyalog Version 20.0 – Part 2 – John Daintree
- D13: Giving Key a Vocabulary – Adám Brudzewsky
- D14: The Return of Uncle Andy’s Fireside Chat – Andy Shiers