I had been looking forward to this User Meeting for a whole host of reasons, mainly because there would be a whole lot of new experiences; I’d never been to Scotland before, I’d never been in one room with quite so many smart APLers, and I’d never been to a work related conference. There was an opportunity for a lot of firsts, which was exciting.
I was fortunate to have my first conference coincide with Dyalog’s Golden Anniversary as I feel like the atmosphere generated by this really built on the experience. True, I can’t really reminisce about “the good old days” in the same way as the others did - since they were often a long time before I was born - but I can still enjoy hearing tales and learning about the history which led the community through its first fifty years. We can often learn from stories like these. In the talk ‘Lessons from 40 years of APL’, Jay Whipple told the story of how his father told him to take as much money as possible and make an investment in a young college student who had been toying with the idea of an APL compiler. Jay said no to his father, he thought it would be a bad investment. The student was Bill Gates (worth $81.4 Billion in 2016).
First Day – Sunday
The first day consisted of two lots of two and a half hour workshops. My choices were Compiler and Performance Features with Jay Foad and Roger Hui, followed by A Tour (de Force) of APL in 16 Expressions, again with Roger Hui. Being relatively inexperienced with APL the pace of these was a little difficult to keep up with, but understandable if you have 16 expressions and only x amount of time to fill.
The first workshop went into depth about Performance Quality Assurance (PQA) and Benchmarks. How many they run each day (13,659 to be exact), how they know how to calculate how many to run, etc. And this all relates back to the number of combinations of data types and functions that need to be tested. There was an exercise for us to generate the different combinations. The following is code of Roger’s which does this, where x and y are arguments, bsildz are data types, and 0124 are the sizes.
'xy'∘.,'bsildz'∘.,'0124' ┌───┬───┬───┬───┐ │xb0│xb1│xb2│xb4│ ├───┼───┼───┼───┤ │xs0│xs1│xs2│xs4│ ├───┼───┼───┼───┤ │xi0│xi1│xi2│xi4│ ├───┼───┼───┼───┤ │xl0│xl1│xl2│xl4│ ├───┼───┼───┼───┤ │xd0│xd1│xd2│xd4│ ├───┼───┼───┼───┤ │xz0│xz1│xz2│xz4│ └───┴───┴───┴───┘ ┌───┬───┬───┬───┐ │yb0│yb1│yb2│yb4│ ├───┼───┼───┼───┤ │ys0│ys1│ys2│ys4│ ├───┼───┼───┼───┤ │yi0│yi1│yi2│yi4│ ├───┼───┼───┼───┤ │yl0│yl1│yl2│yl4│ ├───┼───┼───┼───┤ │yd0│yd1│yd2│yd4│ ├───┼───┼───┼───┤ │yz0│yz1│yz2│yz4│ └───┴───┴───┴───┘
They also showed the speed-ups between versions 14.1 and 15.0 using the graphs visible below. Anything below the x-axis is a downgrade in performance, which can be a huge problem for Dyalog and its existing client base. They were particularly proud of the fact that they were able to progress it to a point where all of their tests had come back faster. The switch between versions of Visual Studio from 2005 to 2015 made possible a lot of this changes in speed.
Roger’s workshop after this was much more thought provoking and contained a lot more actual APL code. It started off fairly simple and with the idea that the difference between two boolean comparisons could be used to find the sign of a number. This idea can be extended by multiplying the number by the its sign you can find the magnitude.
y← 2 0 ¯5 (y>0)-(y<0) 1 0 ¯1 y × (y>0)-(y<0) 2 0 5
This entire talk was essentially 16 little statements which would have some use in a relevant situation. I didn’t follow every one of them entirely, but it was very satisfying to the mathematician in me to see him prove Euler’s Identity in APL. Complex numbers are an area of mathematics I haven’t touched since I left school, and I’m yet to find a need to play with them in APL since they don’t really come up so much in the real world- it’s not often you have an imaginary element to the amount of money in your pension pot.
I won’t go into detail about every single statement we covered but overall I thoroughly enjoyed this workshop.
Second Day – Monday
The following day was in short exhausting but great. I struggled to get up early, and to stay up after that, but the talks given were well worth listening to. The structure of the other days was much different to the first. Instead of individual workshops, we all attended the same sessions in the auditorium. There’s too much content for me to go on about in detail for each of the talks so for the remaining days I’ll just mention the highlights and why I found them interesting. The highlights of the second day for me were:
- Hearing Joshua David’s response to the Student Competition- how he attempted the problems, what his solutions were, etc;
- Learning of the new primitive functions and operators which will be coming to version 16.0 with John Scholes and Roger Hui;
- Seeing the implications and practicality of having APL on your smart-watch with John Daintree.
Third Day - Tuesday
The parts I most enjoyed from the third day were:
- Again hearing about the response to the Student Competition- how Marinus Oosters attempted the problems, what his solutions were, etc;
- Seeing TamStat and its potential with Stephen Mansour. I studied statistics to a fairly high level at school and what I would have done to have a piece of software like that;
- Seeing the reasons one might do APL as a hobby as opposed to a career with Alex Weiner;
- Failing miserably at the Viking Challenge- having an attempt at nautical map reading on the Stormwind Simulator, not quite making it to the rescue but still having a good laugh.
Fourth Day – Wednesday
The best bits of the fourth day for me were:
- Seeing how things were in the early days. Stephen Taylor’s “talk show” style hosting of Geoff Streeter and John Scholes was very comedic and informative;
- Learning that APL was used back in the day with Rowntrees to make Kit-Kats and Fruit Pastilles! I had no idea I could use my APL skills to make something edible;
- The banquet, no explanation needed really.
Final Day – Thursday
The final day was a little shorter in terms of content than the others. We had one more workshop, where I attended Dan Baronet’s Version 15.0 in Depth. This included a deeper look into the syntax of the new file functions, and it made clear to me where there’s use for these within the company over some of the current ways of doing things.
I also really enjoyed “The Cartoon Introduction to APL” – especially the game in the final half of which APL idiom best matches the picture displayed. Very fun and makes you think. I managed to scrape 6th place just a few points behind John Daintree, which I’d say is an achievement.