curious to see how many people join us. Where are you coming to us from Wayne? I'm in the US in New Jersey so if there's any explosions in the background while I'm talking it's because it's the 4th of July. Oh yeah happy Independence Day. Is that a thing you say I don't remember do people say happy Independence Day? I don't think I've ever said that to anybody I don't uh I don't know it just is Independence Day. Yes yeah I guess I guess all right. How about you Alex who are you? I'm in the Netherlands. All right who else is here? Hi Abhishek how are you? Hey Jeremy I'm good. Where are you joining us from? I'm joining from India it's quite early in the morning. Yeah India is a big place whereabouts in India are you? I'm in Lucknow near Delhi northern India. And what's the time there? It's 5 30 a.m. Oh Curio are you in India too? Yeah I'm in India too I'm in south of India actually from Kerala. Oh Kerala awesome apparently that's really beautiful I used to work with somebody from Kerala who said I should come visit him one day but I never managed to. Yeah you definitely don't yeah I'm sure I'd love it it's like the one country I've always wanted to visit but yet as but haven't yet. Oh I see I think you should come to any conferences or something like that. Yeah so I want you to try aloo parathas in Delhi Jeremy because I know that's the Indian bread you like. Yeah yeah there's a lot of Indian foods I like. We do get some pretty decent dosa near here which is nice we didn't use to but now we do but I'm sure it's nowhere near as good as the dosa that you get in India. I don't think I've ever had an Indian meal I didn't like. I see Wasim is here as well thanks for all your help recently Wasim. Although he's muted and devideoed maybe he's being coy. Hi Todesh how are you? Also muted and devideoed that's fine. Hello I'm just here he comes. Yeah just just hang around but yeah it's July 4th so. Yeah how's your July 4th going so far? Nothing much right now but we're going to have some food and stuff so yeah we're preparing so awesome. Yes we'll see we'll see what there's any fireworks on TV or something like that. Yeah and we've got some Aussies here as well. Hi Radek. Hi Serada. Hello hello how are you doing Radek? Good good so excited for the session. Alright well let's get started shall we? Is anybody here had any experience with APL or J? Okay nobody played around with it. Yeah hi Felix where are you coming to us from? I'm in Washington DC and what's what have you what have you done with it Felix? Mostly toy stuff I was doing advent of code last year in APL. Okay so you're probably going to be able to teach us some some stuff and who else somebody else said they might have done a little bit I think. I've done a little bit less than less than less than Felix but just just played around with it just started trying to go through a linear algebra course chapter one in APL.  It's a textbook that is linear it's a linear algebra textbook and they chose APL as the... Oh wow can you share a link to it in the chat? Yeah absolutely. You've got any independence day things happening today Isaac? Um just this call. I'm sure there'll be fireworks going on sometime but I don't know that we're going to watch them or anything. All right well I'm glad there's some folks who hopefully can help uh help us figure things out because I've got very I've got very little background in this other than teaching my kids some math using APL and a little bit of playing around with Jay. I was actually on the uh array cast podcast this morning so uh lots of APL things happening in my life today. Applied linear algebra with APL. All right I guess I should share my screen so that people can show what you're sharing. Share screen. Share. So this is one of the things I like about APL is that there is you know a bunch of books and whatever around that use APL to teach other things. Well let us know how it goes. I've never heard of this one. Yeah it looks good so far. I just finished chapter one section two so I'm not even completely through chapter one but when I'm further along I'll let you know. All right so hopefully everybody's done step one if you haven't yet that is to install dialogue APL. There is a bunch of different APL interpreters around but they're not all the same and dialogue seems to be the one that it's by far the most heavily invested in and has a bunch of like cool things that aren't necessarily in the other APLs. And I do recommend installing it from their website. You don't have to register or anything. There is an option to download an unregistered version and it works perfectly. So I'm on Windows but there's also a Mac one and then there's both Debian and you know or Ubuntu and Red Hat RPM whatever options for Linux. I think the Linux one doesn't come with a GUI so I'm not installing this one Linux at the moment so I haven't tried this I'll try it later but there is a GUI you can download called Ride. Now that comes with a Mac one and Windows comes with its own GUI but there's also if you go to the latest release here for Ride you'll find there's RPM and Deb for AMD and ARM platforms. So I think you have to install dialogue first and then you install Ride. Okay so then to run dialogue yeah you know on Mac with command space type dialogue or on Windows hit the Windows button and type dialogue. Now one thing I found a little hard to find which is actually pretty obvious and now I know where it is it's increasing the font size you just do it in the toolbar up here.  Now dialogue keyboard yeah APL fonts and keyboards so if you scroll down to the bottom here it's a little hard to see actually but there's actually different tabs here. So on Windows you should find that you can so there's a language bar with all the different glyphs right but you can also hold down control and press the keyboard button to get a glyph so there's control a control j control hyphen on Mac it's you press back tick this button and then press the letter. So what I did is there's a few ways you can do this on on Windows I can't remember if Mac does this as well if you wave your mouse over or something in the toolbar it tells you what button to press to get it and then the other thing I did was I just googled for APL keyboard and I just printed out oh that doesn't work because of my background thing hang on video and I printed out just a picture of an APL keyboard which honestly I haven't referred to too much because the one in the IDE works all right. So looks like on macOS we have that little tooltip thing showing up too. Oh okay and you know I don't know like if it's any use or not but if you want to in Windows you can use back tick instead if you got a unicode input you can you can have it activate a keyboard when you start which obviously you pick APL and then you can turn on maybe we have to press this to check oh it's weird hang on well this is working before I was able to turn on back tick but for some reason it's not working never mind well you should be able to click configure layout and turn on a back tick instead but the using control works fine for me now in mac and windows the the the back tick or control keys will just automatically work when you go into the app if I run something else Jeremy can you share screen oh yeah yeah sorry share screen okay okay thanks for reminding me Serada okay so that's the control whatever's and then if I go into some other dialog box or some other program then the control buttons don't work anymore they just get my normal like control I selects all um if you want in windows if you want to use the dialog keyboard elsewhere you can hold down the windows button and press space and it'll pop up a list and keep holding down the windows it'll pop up a list of different keyboards and you can just choose dialog APL keyboard and so now if I start typing control I get the the dialog ones here so if you're trying to use like if you're trying to select something then try to copy it with like control c and it doesn't work that might be because you actually have the dialog keyboard running so then you'll just have to hold down windows and press space to go back to a non APL keyboard for mac just go to this APL fonts and keyboards dialog page and click on macOS and it'll show you how to enable the keyboard and then you can change your keyboard layout for mac but you don't have to use any of this just to use ride or the windows IDE this is just if you want to use them outside so has anybody had any issues with installing oh the other thing to mention is on linux if you go to the forum there is a link here using dialog in Debian which describes how to install it because you do have to install at least one extra thing and possibly two and shows how to use the keyboard and then I see Adam who actually works the dialog has kindly added a note here about ride which we've already mentioned so that's good and so that includes the back tick thingies all right yeah did anybody have any issues with installing or any other notes um oh I see wasiam has mentioned try APL okay yeah so I haven't really used this myself but I know a lot of people talk about it which is yeah APL in your browser this is to back tick yes it does it looks like back tick works here cool so you can use back tick followed by a letter to put it in there and they've also got the what's this tab seven equals tab seven seven tab s oh I see there's multiple ways to type this so prefix s I think means back tick s yes okay so that's how you can read those little thingies or you can just click on them all right is everybody able to run APL and type stuff okay just gel if you can't otherwise we'll keep moving on I guess with APL it's not like the conciseness and expressiveness of it means that it's not like you're typing it 100 words per minute anyway so right yeah yeah it's more like typing a math equation or something I suppose yeah Charles says going to an obscure programming language course at 2 a.m what am I doing with my life we can't help you with that Charles because we're also all here some of some some of them are here on independence day so everybody here will not be able to empathize with any troubles you're having sorry um all right so okay we're making progress so I'm going to run dialogue increase the font size and I don't know if there's a way to turn these off by default but you can get a bit more space back by clicking on these little various x's around the place I do feel like it would be nice to get some more space by removing the word language bar above the language bar I'm not showing that much not much doing much for us but so be it all right so uh show you I'm not an expert in this um IDE but um it kind of behaves like a normal REPL so I can type numbers I can type expressions um so yeah the answer from dialogue APL appears on the left and my input appears indented um something it took me a while to realize is that you can click on an earlier one with your mouth so go up go up to it and then um you know edit it and if I press enter it actually this one goes back to what it used to say and then this and it'll put my new thing on a new line which is actually really really helpful so I think that's my number one uh tip that I found so far you can also bind uh scrolling through history to a hotkey yes you can and I thought it might have even have come with one I can't find anything that it's working for um dialogue APL so keyboard history no all right uh how do you all right how do you do that is it configure references okay called configure in my one probably keyboard shortcuts yes and it is called backward or undo I believe backward or undo control shift decay back control shift backspace control shift backspace there we go nice okay that's great um all right so the next thing I wanted to do was get a jupiter kernel working um because I'll tell you my my plan and I'll tell you why it's my plan um most array programming tutorials books I've seen kind of like look at one concept at a time and go pretty deep on it which is not the fastest way way to teach things and I think it's particularly not the right way to teach APL and the reason for that is that when I look up stuff in the help so in dialogue for windows I can wave over one of these and go down and I can click on more and doesn't always come to the front but here we go I get the help now let me explain how to read the help the help tells you shows me up here what the glyph is and every glyph has a name so that small circle is called jot and um we'll talk about this soon in more detail but generally speaking each glyph does two things called monadic and dyadic um and each of those things has its own name so jot can do either beside or bind okay so we can click on beside all right now you can see the problem here is that the examples all use glyphs that we don't know and so it's like looking up in a dictionary to learn how to read Chinese when you don't know know Chinese so my plan is to first learn every single glyph like in a simpler way as possible so that then we can read the documentation so I think this is something that I haven't seen done before and I'm quite enthused about learning all the glyphs so I I've been teaching math to my daughter and her best friend Claire and Gabe and um that's the very idea I taught them we're going to try and learn all the glyphs and they're just very excited about the idea of like all of these weird symbols becoming things that we understand and there won't be weird symbols anymore so for me most of these are still weird symbols to be clear um but yeah I don't know like a lot of them probably won't take long to learn like obviously these plus minus times divide and these equals you know so quite a few of them they will start with the ones that we can recognize so the yeah one reason I want to get Jupiter going is I want to be able to start writing blog posts about APL so let's try installing that together I don't know if anybody's already done it but I'm going to go Jupiter APL kernel I um I played around with APL a little bit a couple years ago before I took a break and I found that getting the Jupiter kernel for APL working just kind of works so hopefully that's still the case but that's really easy to get it going all right uh so I've already got Jupiter installed um on windows you can use condor or pip to install it probably condor might be a better option um and so now here let's see if this is the right button install dialogue I've done that install anaconda I've done that oh that's right they haven't actually got a pip or condor installer for this which obviously they ought to fix so we should fix for them download this fine save okay and just recently I found my downloads in chrome have started taking a ridiculously long time but looks like it's finally done okay so let's unzip that okay and then it's said to run install dot bat run anyway okay looks like something happened uh okay let's see if what we wanted to happen happened so I run Jupiter okay and new oh dialogue go baby go so now I'm going to use windows oh I ought to communicate that's fine okay so I'm probably going to have to hit windows space to choose the dialogue keyboard and okay cool so one one plus one all right you're right Isaac that was pretty easy so um if uh somebody on mac do you have a is there a like integrated help in ride that gets you access to something like this no it opens up a website basically okay well that's fine I was going to say everything that's in there is also in the website let's try searching for that exact thing and of course I just tried to hit control t to open up a tab but that doesn't work because I'm in the dialogue apr keyboard um dialogue language elements here we go okay open with navigation I guess I don't really need the navigation all right so I feel like they're at least these are not in a bad order to learn about them so let's start with plus and let's start by learning to read these things okay so up in the top right here we've got the cliff and generally speaking for functions they're going to show us the two things that they can do and they're called monadic and dyadic um actually let's start with minus because it's a bit easier monadic and dyke monadic means that you're going to put something only on the right hand side like for example negate three that is the monadic form if you've heard the word monad before in stuff like Haskell this is not that this simply means a function that takes one argument and in apr you don't write functions like that instead you write your argument after if you have one argument and if there are two arguments you can have a second argument before so it looks more like math than normal computing so monadic means one argument um you'll see here that the negate function when applied to three returns like upper hyphen three this upper hyphen is control two I gotta say control but for mac users that means back tick control two and this is how you write a minus sign in apr meaning the constant number negative two so these are two different things right this is a function that negates its argument this is part of a numeric literal constant which is the negative number now it so happens that the negated function negate the function part of three and the number negative three are the same thing but they're different conceptually different this is this is a single number this is a function okay so monadic monadic means it takes one argument and the argument goes on the right does that make sense so far please tell me if it doesn't otherwise we're gonna keep looking at the help because I want to show you how I look at the help basically the help focuses on examples and the idea is that you can kind of figure things out by looking at the examples so if you copy the indented bit of the example and paste it you should get the same result now this looks pretty similar to the example we just gave but you'll see that they've got multiple numbers on the right they've got three point two negative seven and zero this is how you create a one-dimensional array or in kind of pytorch speak a rank one tensor or in math speak a vector you just check spaces between them between numbers so there's some controversy about whether this is accurate but I'm just going to use the word array for everything so this is I'm going to call this for example the number three which we call a scalar I'm going to call a rank zero array here's a rank one array um so when I say array I'm going to include scalars okay so in the minus three point two against seven zero yes what is this it's okay so that is a list or this is an array containing the numbers three point two negative seven and zero and this is the function that you're applying to it the function and so this is the result okay so the result is it's like numpy it's applying the function to every element of the array so the negative function negate function by the three point two is negative three point two applied to negative seven is seven and applied to zero is zero so it is a negative function it's not the minus correct this is this is the minus that's part of us of a literal number this is the negate function all right but it's when you were typing this did you do control two or did you do minus no this is minus this is minus so minus on the keyboard is the dash yes the control two is for the special negative number symbol Jeremy I posted a command in the chat which will turn boxes on and it'll draw boxes around your list so you can see kind of the structure of what you put in there right let's do it copy do you know a way to do this automatically by the way when you start APO because it feels like what I always want I do not okay now I can't quite remember how to read these weird arrow things but I guess we'll figure it out as we go but this is basically saying this is I think this arrow is saying that there is a dimension here so this is a one-dimensional array and I don't know what the squiggle means um Jeremy I try this boxing um so we you go to the session next to session there's a one and two they have a boxes there no not this one underneath yeah this one is also turned on the box okay and does that do the max thingy or oh what that mean uh there's a style equals max so like I don't know uh you can set style all the men and it will draw fewer things okay if you just are dealing with larger arrays okay max so I don't know if this one is the man or the max but that's really useful sirata thank you well spotted they're just a box for everything yeah so about the squiggle I I think there is a difference between a list and a two-dimensional array that's three columns in one row yes absolutely um when you say a list I think you made a rank one array or a vector yeah yeah okay um we'll come back to that so if you do nested lists you can kind of see what the boxes are really about yeah well well well let's leave that for now um great so I think we've got enough now to understand the first piece of documentation so that's good um so let's um pop this in a separate window um all right so um type um numbers and so we should show that one and then we've got rank one arrays okay and then we've got um monadic minus and I guess we could link that to the documentation okay so now if I click on the gate we're going to get more information about monadic minus right and so notice that hyphen in apl is pronounced minus sign or bar I'm not used to saying things with two names they normally just have one um and it can mean two things and the monadic version is called negate so when people talk about like read out apl expressions they will often refer to the names of them so they'll say negate um now this one's interesting copy um let's pop it actually in in here paste now notice here this does not mean minus four to zero this means minus of that I know there's no space after the minus but space doesn't have meaning after a function so that's why two is being negated and negative three is being negated because the minus refers to the whole thing it would be more obvious if there was a space here now if we had written negative four that would be something else entirely that would be the number negative four than the number two than the number zero but minus is a function and it applies to its whole right hand side and its whole right hand side is a rank one array and that's why we get two goes to negative two negatively goes to three and so forth does that make sense okay so Isaac's just added in the chat something useful which is that there is also a bookmark that you can drag to your bookmarks bar which I've actually already done and somebody by the way maybe as we do these things could add these to the forum thread uh to the forum wiki uh so if I click apl here if you yeah so now we've got all these things oh now it's back to gonna work let's try that nice okay this is better I'm gonna turn off my keyboard okay I'm glad we tried that so now back to works and this is written in java script so this will be cross platform so maybe we should show these examples okay minus applied to four minus applied to negative four um the kind of the the apl way and the ap the era programming way of like showing things in general which I quite like does involve um a lot of examples which does like require the reader to like look at the example and figure out what's going on and this is what I've been doing in teaching the kids so math and apl is we look at the examples we post them into dialogue and then we say like oh who can guess what's happening here and it's actually quite a good it's quite a good exercise but it requires a little more work perhaps and people are used to okay we got decimals rank one arrays monadic minus so maybe that should be a heading three and then we'll create a heading two which is this is minus oopsie dozy oh back ticks how do I do a real back tick crap uh anybody know how to type a back tick you could temporarily close the java script bar I guess I could yeah I could always ask Adam if he knows I was hoping the back tick back tick would give us what we needed is there a back tick in here I don't think so do you have a numpad is it alts I do not six or one two six I do not do you know that off the top of your head that's a bit crazy now I googled it seems to work huh alt back tick alt back tick nope nope oh what just happened whoa that's a weird thing somehow I just pressed a button that put up a terminal I was able to do option back tick on on my option the back to come back yeah and that gave me a back tick with an underline and if I entered turned into a regular back to okay all right I'll let them later okay so this was called minus sign or bar and this was called negate okay so now we can do dyadic so dyadic means it has two arguments this is called minus or subtract okay so normally two arguments in a function looks like this unless you do what we call infix notation in which case it looks like this apl is always infix notation so to dyadic means it has two arguments one argument goes on the left one argument goes on the right okay any questions about dyadic versus monadic so just like in numpy you've probably noticed that you can apply a function to an array and the function is applied to each element of the ray negative goes to four negative of two negative of zero negative of minus three negative of minus five so we can do the same thing when it's got two arguments we can have one on the right and then a different argument on the left so it makes sense so that's element wise just let numpy three minus four two minus five one minus one this also works is you can have a rank one array minus a scalar and just like numpy it'll broadcast this so this is three minus one two minus one and one minus one and vice versa one minus three one minus two one minus one is there much of a culture of using brackets in this world so I wouldn't say there's a culture of using parentheses but I would say there are times you have to use parentheses I would say I can't imagine anybody would use parentheses around this just like in python if you were writing if you were writing 1.5 times 6.2 we know perfectly well that dot binds tighter than times so in python nobody would write this right well somebody who didn't know that dot binds tighter than asterix would say like well this is much clearer but like you know only the first three times after that you know perfectly well that this means 1.5 times 6.2 rather than 1.5 times 6.2 so arrays are everywhere in APL so the idea of parenthesizing this in such an expression would be weird and I've never seen that done okay and I guess in general because the kind of parsing and precedence rules in APL as you'll discover are so simple and clear parentheses generally only seem to be used in real code when they're actually necessary rather than just for clarity I would say in something like C++ we see parentheses used for clarity a lot more because for example in C++ or even in python the precedence rules are very complicated and few people remember them and they're easy to misremember all right so I feel like we've probably done our first glyph so that's cool so our second glyph we can do will be plus and dyadic plus is the easy one so maybe I'll just do some copying and pasting in fact that's a good way to get a back tick as I put it in my paste buffer haha all right so this one is called conjugate and then the other one will be called plus and the overall thing is called plus sign that's easy plus sign and one attic is called conjugate conjugate and this is called oh got it the wrong way oh no that's fine I just have to write dyadic dyadic maybe I'll make a copy of this underneath the next time okay so we can basically do the same thing as last time paste those here and we will replace dash with plus and three plus two is five rank one array plus rank one array rank one array plus a scalar which is a rank zero array kind of they all work so hopefully that one is straightforward now conjugate so it's pretty normal in APL to provide to provide a rank one array to an example because that way you kind of get to show three examples in one go right so it's important to just look at them one at a time um but maybe you know to start with we can like do that but like we shouldn't need to do this for too long because hopefully we'll get the idea that to read this it means plus 1.2 plus 0j4 plus minus 5j minus 6 which means I think we need to talk about complex numbers which is called because we get to talk about some math all right so is anybody on the call and please don't be shy of saying yes because we're trying to learn math is anybody on the call don't know at all what a complex number is yep yep okay great so um have you ever come across the idea that the square root of minus one is something called i no i know that i is a thing but okay that is what i is so basically the idea is that we can we can square things which means multiply by itself um so three times three equals nine and so what do we have to square that means three squared equals nine um we'll get ahead of ourselves a little bit and uh no this is let's not let's just do that um so to write squared we can also say to the power of two um be very careful this means power of an APL not times so there's three squared okay and there's four squared and so we can do the opposite and say what would you have to square to make 16 and the answer could be either four because four times four is 16 or it could also be negative four because negative four negative four squared is also 16 you happy so far so then the question is okay okay so the question of like what do you have to square to get to this number is the square root so the square root of 16 and we always take the positive the square root of 16 is four so then the question is what's the square root of minus one and the answer is oh it's the number that you'd have to multiply by itself to get minus one which of course doesn't exist as a real number because minus one times minus one is positive one so um we just make it up we make up a number and we say okay i'm going to invent a number i'm going to call it i and i is the number that if you square it you get negative one and i can't show you i pineapples but i also can't show you negative three pineapples you know they're both like invented ideas i mean i can't even show you the number two i can show you the digit two i can show you two things but the idea of the number two is a mathematical concept so numbers don't necessarily exist and so a lot of mathematicians say i is considered is called an imaginary number but it's not any more imaginary than any other number because all numbers are imaginary okay so a you can then create something called a complex number which is an imaginary number plus a real number added together a real number being anything that's not doesn't have i in so for example here's a real number okay and here's an imaginary number and so that means that this here is a complex number and there's no way to like reduce that further we're done okay that's that is the number three plus i um you can do things with i you can multiply it by four and four times i is four i that's a number you can square it and of course you'd get minus one this i minus one my i squared is minus one um you can multiply i by four and then add three and that gives you the number three plus four i so here is the real part and here is the imaginary part and the whole thing is called a complex number and you can't like this is not an equation i can't do anything to this this is the number it's called the number is three plus four i in um apl we can write complex numbers in a slightly more concise way and we write them using a j on the left hand side is the real part on the right hand side is the imaginary part so this is zero plus four i also known as four i this is negative five plus minus six i also known as negative five minus six i does that make sense so complex numbers always involve i there aren't any other yep there aren't there's no need for anymore we just need the one extra letter which is this ability to kind of say like oh there's a second bunch of things in the world and the key reason that complex numbers are really interesting and important is because you take the number line that we all learned like my daughter learned the lumbar line in prep right you can move forward along the number line to get bigger numbers and backward to get smaller numbers and after you go forward you can then like undo that with negative to go back to where you started when you use a complex um complex numbers you move from a number line to a number plane and the y-axis represents how many i's do you have and the x-axis represents what the real number is and so then you can graph it on a cartesian plane like so so you've got the numbers okay i never share my screen that's just much that's just how i am until your serata tell me to okay so yeah so you've got the numbers on this axis and the negative ones on this axis um yeah here we go so here's our number line here's our number plane and so here's three plus four i and so in um real number only math you can multiply by a negative number and it flips it to the other side but in um in complex math you can multiply by i and it rotates it by 90 degrees uh i gotta get the door just a moment realize my life i've got home okay so um yeah they you know they're used for a lot of things which um kind of expand the world of math to two dimensions you know and um and give us you know they let us work with with tuples of two things at a time um so they yeah they come up a lot in in in real life and in fact you know in in physics it turns out that our actual real physical world um operates according to the laws of complex numbers not real numbers um so they're very real um okay so it feels like oh so no please i like to chat so interrupt any time go ahead sure uh it kind of feels like a complex number it's like a shorthand for representing like a 2d or a two a rank two array as not a right two array right one array of two items yeah right yes yeah because like because you're like using the uh the plane and the um the unit circle and stuff it feels like you're trying to represent like that second element of that array is written in terms of its relation to the first element or something like that yeah yeah i mean it's yeah um yeah i think like getting an intuition for complex numbers is it's very interesting and maybe we'll add a like a we should add a forum thread about complex numbers and put some videos there because there's a lot of nice videos about kind of the intuition around this um so i just wanted to come to a question that charles asked on the chat which i think is an interesting and good one which is um can you explain what your motivations are for investing your time in this what kind of real world applications are there uh where this being um array programming and api l i guess um so um there's a number of reasons not all of which are related to the second part of charles's question which is what are the real world applications of this um there certainly are some at least indirectly um but i'd also say yeah it's not my only reason for being interested is not just real world applications but i think first and foremost for me math is quite beautiful you know i think it's like a field that can contain a lot of beauty in a very deep aesthetic way um but i'd also say it's an area that frustrates me you know math is frustrates me because um i find it very kind of inconsistent uh you know like the way and the like the notation is often very hard to look up and it's also like hard for me to understand me to understand what things mean in a very abstract way when i can't like experiment with them so like one thing for me is it is it helps me understand math um it also helps me teach math so i'm i'm teaching my daughter math and there are things which i was finding difficult to teach her um until i started teaching her with ap l um and num pi um in particular like sequences and series was the first one where i just had no luck teaching her and her friend gave sequences and series i did a whole hour on it then we made no progress at all and then when we did it you know via learning first some num pi and some ap l and then coming back a week later and and then it was easy to explain um so yeah so one is you know i think um a way into math one is a way into teaching math another is um i think there's such beauty and power in notation um in our last study group we talked about the power of the notation that is regular expressions for example now ap l ap l is a much deeper notation than regular expressions but like notation a powerful notation is a key thing used to further human intellectual development you know and you'll see this repeatedly particularly in mathematics um but also in other areas like physics things that like just take you know hundreds of years for very smart people to advance then somebody finds a notation for that thing and it powers ahead um so things like algebra for example dramatically you know impacted our ability to develop math um the notation of numerals that includes the digit zero also dramatically improved our ability as a as a species to develop mathematics um but you know other areas like juggling you know jack you know there was a development of a notation for juggling a few years ago and suddenly there was huge developments in what people were doing because they were able to manipulate the notation and say like oh what if we move this over here or you know you start to create ways to manipulate the symbols in the notation to develop new ideas so you know ap l is a very powerful notation not just for math but for a range of things that can be represented using the similar kind of concepts that we use in math for example one guy has built a gpu compiler using ap l and they did their phd essentially in like ap l is a notation for building compilers um so that would be another one at a more pragmatic level um so i learned a little bit of j before i did any ap l um that j's matched the same thing yeah i definitely felt like it learning j did more for my programming skills than any other language i've learned because um ap l's notation was developed in the late 1950s and so it's been continually developed in the in the decades since um um in really quite a kind of independent branch to all the other computer languages so ap l jk the array languages have this their own little wealth and so if you've not worked with languages from that branch you miss out on that entire development of thinking um now we'll say nowadays numpy and derivatives of that have borrowed a lot of ideas from ap l um but in a very kind of impure way uh so i would say also like for somebody doing deep learning and that kind of programming you know scientific programming in in python um yeah i think you know you'll you'll discover better ways of thinking about these kind of loopless programming particularly if you then look at things like Einstein notation or inops or stuff like that anybody else have any other kind of reasons they were interested in this or um questions about that or anything else i guess for me it's just um a different way of thinking i mean i'm hoping that um as we um um i mean it's always it's always a case you get a big speed up if you can remove a loop and vectorize things and um you don't really have a choice but to do that in ap l for the most part yeah so kind of get get a lot better at doing that yeah yeah i think also like it's an interesting path into other areas of math um particularly j um j comes with various labs which you can run on j so j's like an ap l derivative written by the original author of ap l and yeah it comes with all these labs which you know are really interestingly kind of thoughtfully put together and basically take you through um you know some pretty interesting mind-bending ideas from mathematics um so maybe at some point we'll yeah morph over to j and try out some labs all right um so to wrap up today's thing let's try to finish plus so um yeah so dyadic plus move it up twice there um we've already done sharing your screen not sharing the screen of course i'm not sharing my screen because i never remember okay thanks alex um okay so monadic plus is conjugate so let's learn about that um so when i click on the um specific monadic or dyadic version right i'll get so for example here conjugate it'll show me how it's used and basically it shows that we start with a number y we apply plus to it and the return value of it is something called r r for result or return value and then in the description it's going to tell me what each of these things are so it says here if y is complex then r the result is y with the imaginary part of all elements negated if it's real or non-numeric it's unchanged so we should be able to view that here so here this is real so the return value should be unchanged it is okay this is imaginary this is complex the imaginary part is four so here is the imaginary part negated okay and here is another complex number and this is the imaginary part and here that is negated so if you think about it on the number plane conjugate flips just like negative does but negative flips on the real plane conjugate flips on the imaginary sorry negative flips on the real line uh conjugate flips on the imaginary line great well i think we're done here um does anybody have any questions issues anything else anything you want to make sure we cover next time appreciate you guys joining um this is going to be fun what do we got 21 participants that's good yeah yeah i think this is going to be um going to be a lot of fun as we keep going awesome yeah so um i think you know like we actually got three more than i expected to be honest and i do think um we might be able to zip through the glyphs pretty quickly on the whole um i'm going to assume that people like generally have some reasonable python background um by the way and so sometimes we'll be relying on analogies um to python um and that should make things a bit faster as well all right i'm gonna um yeah i'll pop the videos up on youtube i will create a playlist for them and uh let's use the forum yeah for like add anything you like you know feel free to create new topics about stuff related to array programming that aren't necessarily directly related to anything we've talked about whatever um this is all very informal all right bye all thanks all right take everybody