How about these other speakers? Yeah, I I don't know how I'm gonna follow up Nigel's talk But here we are I want to appreciate everybody at OpenVizConf and pretty much everybody that I've spoken to This is my first time speaking publicly by myself So yeah, it's a huge honor that you guys want to have me here and happy to talk about stuff now and later So I'm gonna get started with maybe shooting myself in the foot Unlike everybody else. This is a Google doc presentation So you can actually go to that link and follow along with me on the slideshow if you want I've kind of annotated more stuff in the slides. There's more links and other goodies hidden in there if You happen to be on your laptop So yeah, the title of my talk sounds pretty high-fluten and it's gonna start pretty high-fluten, but it's it's a very Dear and and kind of normal thing to me that I'm trying to kind of work through and that's the human side to being a digital practitioner you know making stuff on a computer and Trying to find human qualities in that so I want to start actually by going back a little bit Does anybody know what this is? Right, it's not a pipe or maybe it is a pipe I'm not I'm not sure and actually the point that I want to introduce my talk with this slide is not so much What it is or what it isn't? But you know Despite the fact that we can argue about the meaning. I think we can all agree that a person made this That person is Renee McGreet. He made this when he was 30 years old 1928 1929 and I find it so fascinating that that an object an inanimate object can have kind of human qualities If you go and we take a step back and we look at the tools that McGreet used to make his work paints paint brushes specifically oil paints for that painting the treachery of images It's it's less clear that you know There's a story and an intent and an ideology behind, you know, what's what's being made And I would argue that that has translated to the digital as well. This is an amazing animated gift by this motion graphics artist J. R. Canis hopefully I'm pronouncing that right and You know, he he uses digital tools to make these animations and they're just so full of character and and Personality but if you look at the tools that he used to make his work I don't know if you guys are familiar with After Effects Maybe not this particular version But it it's such a pragmatic tool that it loses a lot of this these these intentions Especially when it crashes Which it happens often for me because I have a pretty crappy MacBook So why is this exactly? I'm actually not here to tell you what the answer to this question is But it is something that I am super interested in and have been kind of grappling with in my own kind of artistic explorations And it's this idea this dichotomy of expression and utility expression kind of the metaphor being you know McGreet's pipe and Utility being the tools that he used to make his pipe And I'm super excited to be an artist working today because we have the advent of software and Software allows us to make tools that are also art And I I'm arguing that kid picks here is you know, this is an early version of the software It in of itself as as a UI and as a tool is is incredibly expressive It has a lot of intention and in some ways could be considered art But it's still a tool and I'm using it to kind of riff and remix McGreet's treachery of images here So all of a sudden with the advent of software We have this kind of muddling of this initial dichotomy that we've seen in fine arts And I would also argue that this has some sense in data visualization as well This kind of just as an artistic piece the genealogy of pop rock and music, which I'm sure you guys are all familiar with as a Tufti has popularized You know as a as just a composition Aesthetically, it's like an interesting thing to look at but it's also a tool you can you know dive into the super graphic and find parts of Kind of like music musical eras that interest you and and find You know what's relevant to you and how that is situated in the rest of the world the world of music And in this way Expression and utility are muddled So I want to spend this next kind of half hour or so Talking about expression utility and software through a couple projects that I've been working on Really over the last ten years it's a space that I think is super unique and Not something that a lot of people are exploring and I think there's a lot of possibilities This is this is like the Wild West I think of today So to introduce myself my name is Johnno This is my website my handle is J O N O B R number one Yeah, I'm from San Francisco. It's really cold here Was not you know on the the temperature wise it's like only five degrees cooler than SF, but It really feels a lot cooler here But yeah, you can usually find me riding my bike on the weekends I like to not look at a computer screen when I'm not kind of making stuff And if you're ever in San Francisco hit me up and love to you know, go on a hike or something I grew up in the Bay Area, but I actually went to school for graphic design at UCLA Which is also where Lauren went. Maybe there's some other people here that went there The design media arts program is really really awesome program. It's in at least in the undergraduate program You kind of learn a lot of different disciplines In in how to communicate through design. So, you know, you learn graphic design and typography This is a project. I did one of the first projects. I did kind of trying to synthesize photography as typography and Kind of analyze it a lot of the references and stuff We also learned some data visualization. This is a public policy graph that I did that was kind of comparing a lot of Different publishing events In England kind of which ones were popular or not We also got to do branding and identity every summer the high school students have the opportunity to come to design media arts and try out a few different of the classes and in the undergrads and graduate students get to teach So I got to do the identity and then I was also a TA for the branding class We get to do some film. I thought this one was particularly Ripe for all the people that work on the web. I made a video in college called. We are the inter dot net It's still online. It's in flash. I'm sorry But it was it was coming up to the Internet's 37th birthday And so we made a documentary we went from the art department, which is a north campus down to the south department where the computer science People were in a Bolton Hall and looked at one of the first servers that ever existed and interviewed people on the way And it's like how did the Internet change your life? It's pretty ecology But yeah, and then there's there's a lot of other stuff that you kind of get to grapple with so You know if anybody of you are thinking about going to school or have kids That are thinking about going to school. I would highly recommend going here if for none of those other reasons I was introduced to this while I was there and Lauren McCarthy who spoke earlier she kind of Touched on this probably better than I could ever But Casey Reese who's one of the professors at UCLA he He teaches this class called interactivity and he uses processing to teach that class And so this is this is what it looks like It's just this kind of sandbox environment where you can write little instructions You hit the little play button in the upper left hand corner and then a window pops up with you know Your drawings and you can do animations and a lot of really crazy stuff the one class that really Kind of got me hooked on programming. I had done some stuff before but I hadn't really dug dug deep into it and really understood the potential of it was this class called visual music and The premise of the class was a 10 week course where we were given a song That was like not like a pop or rock song But something a little bit more avant-garde and we spent the 10 weeks kind of trying to emotionally distill what The song was about and then write a program that would run in real time that would represent that So to embarrass myself as this seems the nature of this conference Gonna show you my first programming project also So Yeah, over the course of the 10 weeks, you know, we learned about four statements and arrays and classes. I didn't use any of those Basically just a really long like maybe like two thousand line document of just if statements like if Middle East is greater than this Kind of draw this thing and like copy the function over So yeah, you know it kind of changes scenes and progresses I'm not gonna show the whole thing because There's a lot of stuff I want to cover but This this was really seminal and kind of like making me realize that I I was interested in animations growing up But I was kind of discouraged by hand cell-drawn animations because it's it's such a tedious process and This particular project was very tedious because I was handwriting everything But I realized the potential that you know, you could abstract a lot of this stuff To to create like systems and rules to kind of dictate your animations So after I graduated college After I graduated from college, I continued kind of messing around with this idea of visual music messing around with Processing these real-time kind of effects. So taking in audio data or using computer vision Exploring different techniques, but then also exploring different aesthetics different compositions different color palettes things that I thought You know were interesting or appropriate for the various songs so I want to show just a little montage of Stuff that I would work. I was working on for three years In my free time if it looks so these Google Docs slides. Oh my god I Have everything else loaded Okay, here we go so the format is that The label is the artist that I'm making a visualization for and the year that I made it Okay, so compression was kind of tough on that, but hopefully you get an idea of You know kind of the ideas and techniques that I was kind of grappling and during that time I did learn how to properly use arrays and classes and also leverage GL and it was it was a lot of fun and I kind of kept a blog about that and kind of Took took a break a little bit from these visual music projects because I had an opportunity to work at Google and What I thought would kind of really refine my programming chops So kind of fast forward a couple years and this nonprofit organization That's an art and technology kind of community center in San Francisco approached me and was like hey We've seen your blog. We've seen you make a lot of really cool music visualizations Would you be interested in making one for the show that we have coming up? they do events and workshops and Have exhibitions and stuff. It's a it's a really cool space and opportunity and I couldn't say no and Kind of in the discussion what they wanted to do was something really collaborative And kind of a lot of the previous work that I had was leveraging a lot of FFT Trying to do like beat sampling and all this like kind of algorithmic stuff And in in these discussions realizing the collaborative collaborative aspect We kind of realized that okay. Maybe I should should try to not use those Maybe there's just a way that you know, we could really put the person in the forefront of this so I'm gonna try to demo this two-year-old three-year-old software right now Hopefully I can exit this Slide show Okay, and so as you can see it's running in the browser This is to a song culprit the artist's name is culprit Here we go If it loads Yeah, that's the software, but actually the setup for it if I can go back to full screen It was actually set up on a monome Which is a MIDI controller with a bunch of buttons on it And so we put it in the center of the audience and let anybody mess around with it I wasn't the person that was in charge of making the visuals the audience was And this reception was like incredibly profound to me Because nobody had ever been like oh my god. That was like amazing To my work before so I kind of I started thinking like wait a second Maybe this project isn't done with this format so kind of I took a break from that for a year and I would you know I listened to a lot of music when I do work and I thought you know Maybe I could just hit an artist up and see if they would be interested So this is a band lulatone. They're from Nagoya, Japan and I didn't I didn't know them prior to Emailing them. This is the email that I sent on November 27 2013, which is basically like oh my god I love you guys so much. I Do have a job so I could pay you But hopefully you'd be interested in collaborating with me and making sounds to you know create Kind of a standalone application And they responded it was it was kind of the start of a collaboration Which was super exciting, but I didn't realize that this was really just the beginning of a collaboration So we made this app called pat a tap You can probably maybe you guys have seen it I won't take too long to demo it but basically every key on your keyboard when you go to the app is a Different sound and animation. So this is Q This is W And these are like all of them together Yeah and So we started working on this the process was you know He sent me a bunch of sounds and I was like oh my god these sounds are incredible And I was like these animations I made are not cool enough Like let me make more and we kind of went back and forth for about six months Making stuff and then editing stuff down and trying to reduce something to what we thought Would be an octopus no Would be something akin to an acoustic Instrument we wanted to make something that was easy to pick up and play but was not necessarily like a DAW that you would be That would be kind of your whole creative suite for making something. This was just a little piece You know kind of like Jeff's talk at the beginning This this is one piece in a very big ecosystem of creating music and we were hoping to help You know a small group of people make stuff What we didn't realize is that this thing would blow up This is this guy He's he's the most famous vlogger in France. His name is Cyprian. I think I'm pronouncing that right and like Yeah after after he sent this like the servers crashed and everything kind of went Hey wire. I was on the front page of Reddit and all this stuff and It was it was so great to see you know people really like it But it was also really interesting to see the different types of ways people make something that you know We had been basically collaborating over the internet for six months, and I had been kind of working on this thing for a year It's like holy crap people use stuff a lot So one way was that you know people just tried it out Another way was that people would try it and then they would share it and you know Individuals from our communities the music community the web community other people would share stuff But also entities in organizations would share stuff and I found this really I find this interesting in general about social media is that Entities specifically, you know They have a voice and usually one person is in charge of of their PR campaign or whatever so you get really interesting stuff like this like wired Published an article about pat a tap and it says get this rad portable animation whatever and it's really small You can't really see it but venture beat at replies like I am so unfollowing you for that gnarly animated gift And then wide response and oh Exclamation point which sounds like so out of tone for an entity like wired It was interesting to see kind of like oh, there's a human behind that, you know and likewise Unfortunately social media also kind of automates and roboticizes individuals sometimes this Jason David Unfortunately took the embed code and just stuck it into a tweet So that's that's our bad for making a bad UI that wasn't explicit like this is for a tumbler or a blog or not So yeah, we we also saw you know these entities right kind of long-form articles about the work There's this this was an awesome article from kill screen that was basically saying how these ungames There's a huge corpus of them pat a tap was one of the ones in this article are really great for kind of jogging your creative energy We also have a merch page if you go to the site pat a tap There's like this UI at the bottom if you hit merchandise You can actually buy artwork that we make Lulatone has a bunch of albums that they produce I make you know print posters And then you can also buy we have an iPhone app and an Android app Which I also want to promote we used this thing called mobile Chrome apps And I don't know if you guys are familiar with me in Chrome extension But basically you make a normal website you package it with a manifest Jason And that becomes a Chrome extension So this this group at Google has also created a command line tool that you can take that same manifest format And it creates an Xcode project and an APK for you And it was dead simple Well The the actual like coding part was dead simple the the whole other like Authoring and like key signing and stuff is like a huge pain in the butt, but So yeah, if any of you are interested in making apps and converting your HTML5 apps or whatever I highly recommend it. I'm just gonna try to skip through this this guy Robert, honey actually Use pat a tap with logic pro to kind of create his own music Anyways, you can wait for the single I think it's coming later this fall And then also in other communities We've seen tons of stuff on SoundCloud and Instagram if you just search for pat a tap or do a hashtag search It's crazy to see most of it is just people messing around But occasionally like this magazine Animal New York made like a really sick beat with it that then another rapper used As a sample to rap on top of it People also do really crazy stuff with hardware. This is this woman Camille Martin I think from France and She had her thesis project was there's an Arduino that had this box where you could touch it and kind of use that as some kind Of input and she hooked it up to pat a tap so you could make you know pat a tap beats with her I think it's called a mysterious sound box And then you have people actually augmenting our code. This is the craziest thing about the internet This guy basically wrote a little bit of JavaScript that I'm just gonna Get copy and then paste into the console of of the site and now we have a sequencer And now I can just you know make beats save them and play them BPM it's really crazy to see Like So yeah, and then finally we actually we've been invited for installation so Museums and art organizations ask us. Hey, was it okay if we use this thing and install it in X and we're like Yeah, we don't have to do anything. That's rad Yeah, if you could just send us a video. We're happy to share it online or whatever So this was in Slovenia in January. They had it set up at this music festival meant And these are the different places that it's been over the world physically installed You know, it's really crazy to think you make software and it's stuck in this screen But with the help of all these people and organizations, we've actually been a lot of places Like physically a lot like here. I'm standing in front of you probably because of this project So this is the this is the first time I'm actually sharing any of the analytics This is the time spent on pat-a-tap in the first month and you can see there's like a huge spike for the first 10 seconds There's basically three quarters of the traffic look at it for 10 seconds or less But if you look down at the bottom almost 10,000 sessions Use it for half an hour or more Which I think is a scarier number um But I wanted to juxtapose this with what I was just showing you because these numbers this data is actually less Relevant than the kind of interactions and discourse that I just showed you the people that try it They share it. They review it. They purchase it. They support us as artists. They make recordings They do music production. They augment it with hardware. They augment the code or the install it They do so much cool stuff and that is way more powerful than any You know million milestone number in my mind So this project kind of sits somewhere in this dichotomy of expression and utility and one other way that we've seen that is through a lot of email discourse literal discourse So I'm going to share some emails with you this one and this helps if you're actually following Along in the dock because I'm not actually going to read these but this is from Ukrainian electro acoustic musician who he and his friends have this like jam session every week and they use pat-a-tap once And it's amazing because this was around the same time that kind of really heavy stuff in Ukraine was hitting last year and it's it's cool To see that, you know, we could play a part in kind of helping Relieve at least a little about tension for people that are actually there People have different backgrounds. This was a filmmaker from New York City He was like, hey, I want to make a video of you using pat-a-tap. So we made a video. It was crazy Sure, why not? A lot of different interests. We got a lot of emails from students. They're like, hey I'm an illustration student. I'm a musician student. Is it cool if I use your samples? Is it cool? How do you do this thing? How do you get started? kind of doing a lot of just sharing knowledge sharing has been really really fun and then randomly we also get like occasional economic Backgrounds somebody like the day before my birthday last year just sent me $500 and it just says thanks for making pat-a-tap Sweet, thanks, dude That's really great because our server costs were actually kind of expensive because I'm a bad programmer or something So yeah, and then we've also been in contact with other industries a lot of record labels have been in touch with us because they want to sign us to do music or You know do some other kind of advertising based website. It's really opened up a lot of opportunities for collaboration So yeah, kind of going back to these hard numbers versus this qualitative stuff. Here's more. This is the last year in traffic It's normalized. So you don't know how many exactly but basically, you know, it doesn't to me It doesn't tell that much except that those are the two times we're at the front page of Reddit So red it really is the front page of the Internet, but other than that it's you know, it's really Kind of these other types of discourse interactions that we've had that have been really powerful But those those don't stop with that project actually I Use a lot of tools in order to make a project like this Some of those are off the shelf. I use bourbon and jQuery people I don't know why but they like really hate me for you still using jQuery I think it's a great library and actually the guy who did the sequencer wouldn't have been able to do it if we didn't have some arbitrary event binding system like the jQuery events that you could spoof events, so Shame on you.  Um, I also augment libraries. There's this really cool library It's hard to see here, but it's it's called tween.js. There's a lot of tween.js This one is by github user sole and it's kind of Formatted from the flash days, but I've kind of forked it and augmented it a little bit because the syntax I like a particular set of syntax and Then I also make custom software and so I want to introduce 2.js It's a it's a rendering environment So all of the drawing the shapes that were drawn are using 2.js It's a scene graph, but you get to what's what's unique about it is that you can choose SVG canvas or WebGL As your rendering system and then also the API is something that I find is much more friendly than more performant libraries like Pixie or something like that So this is the website It kind of gives an overview and then kind of initial first steps This is how much the code is you know to make this thing and then it also has just documentation for all the methods and Properties and stuff and then we also have a page that shows the projects and examples and Yeah, if you have any questions go to the issues on github We have a stack overflow Hashtag, but I don't get an email when that happens, but I get an email when the issues are posted So feel free to post questions there These are the examples they're kind of based off of 3js I do Contribution on 3js. It's kind of how I learned a lot of the stuff that I know about rendering and Yeah, I won't go over these But I will go over. Oh at the bottom There's more like a list of more utility based examples also all these examples are less than 150 lines of code I made a big deal to like make it kind of bite-sized not like here's a thing and it's two thousand lines. It's massive So there's one this one down at the bottom blank. I actually use this a lot I don't know if any of you guys use Python I find the console with a loaded library very similar to ipython Basically, I have an instance of two that already exists so I can see what this is if I hit period I can see all the methods and properties that exist with it So I already know the library so I'm gonna make a rectangle. It has a bunch of make methods I can put it in the middle of the screen And I'll make it 50 so there it is and the rectangle now you get that return because it's a scene graph You have this object that persists from frame to frame So it has a bunch of properties, too. It has a translation Let's move it over 50 pixels. It also has like a fill kind of normal CSS stuff that you'd expect. I really like this pink right now Yeah, I don't like the stroke. I don't know why I have default stroke. I followed illustrator Anyways But What was I gonna do? Oh, yeah, so it also has a matrix so we can rotate this 45 degrees And if we kind of Bring that down if I kind of added addively do it we start to see animations And so we have a function that you can do that programmatically instead of having to do it Every every frame yourself. It's hard Programming when you're nervous So now it spins So that's kind of the basis of it and you can see that Patatap is heavily influenced by the kind of structure that this framework provides One thing that it is really good with that. I'm that I haven't showed that maybe I should show an example Is it's really easy to morph vertices? So I have a I have a notion of where your verts are all the time So if you move a vert I got you covered and I have a method that Keeps your curve, so you don't have to calculate curves, which is really cool and helpful for a lot of these more animated stuff So yeah, why would I make a tool when so many other people make tools and organizations really? And I'm just a dude One reason is for edification. I know the W3C spec on SVG canvas and WebGL so well right now It's it's not even funny The other is community participation, so this example is actually really cool this guy I had initially written the children as a map and he made it an array and wrote all the unit tests for it It's like what the awesome. I just have to hit okay. That's amazing But what I really mean by community participation is that I've learned I never took a computer science class I've learned everything that I know just kind of from the internet and also from Casey Reese and processing in that that community and It's one way to give back kind of the knowledge that I've learned over the last ten years really because I've seen so many people that have That they should have had the opportunity that I had but for whatever reason I'm here and they're not so part of it is for for those people and other strangers that are Interested to learn and I'm happy to help and answer questions in any way that I can So this is an example of good participation This is an example bad participation somebody's basically like hey, this is cool But it's broken and I'm like oh, okay. What's the operating system or browser you're running? No response Helpful, and then there's just the ugly. I got this from cam JG 71 This is really boring and then a few minutes later I get an email notification. Oh, she updated her post What did it say? It's no better And then the last thing is is Reusability so over the course of working at Google and then also making side projects for myself I've written kind of from scratch Rendering systems and also a lot of the other stuff that makes kind of certain things really really fluid and nice Particularly this one called fit to window takes a DOM element stretches it to the canvas make sure that there's no scroll bars and Reduced it to a full-screen parameter, and it's a lot of kind of like over the course of Using or writing something a lot. You're like, yeah, I can make this a lot easier Which is something you can't do in a lot of industries And it's it's pretty empowering to try to tighten tighten your loop So yeah, I think these kind of three properties have a have a really good Kind of symbiotic relationship that help you a understand the content and technology that you're working with and result in a in a more kind of Tackle approach in in how you make content and express yourself Through your work And then to kind of like cap off the section, you know I bring in this graphic again because it's I have a whole other set of dialogue and discourse that I'm interacting with people on You know we have this stuff from pat-a-tap, but then the engine that runs pat-a-tap people are actually making other stuff And if I had more time I could spend like an hour just showing off the stuff that people other people have made but you know we have we have different types of discourse and Kind of want to end with you know discourse is At least why I Work in this tech in this medium. It's a it's a way for me to talk to people It's not like I'm sitting here talking to you. I'm not a very social person, but I am deeply interested in humanity and You know at at in any crafts kind of Oh, I'm sorry go to the slide at any crafts Kind of like highest point I think it's it's an expression an idea that sparks discourse and and that's something that I'm super interested So whether it's rename agreed that paints a painting or my friend Camille who creates a digital version of the pipe or my friends fog these two dance a version of the pipe or My buddies echo the curiosity that do fashion design that kind of represents the pipe or my mom who writes a haiku about the pipe or My friend who does kind of high-level microscopic photography about the pipe Or my other friends who just likes coffee Or typography or me who uses code does anybody know what this will look like when it runs And with that I want to say thanks


What makes for excellence in heart care? It starts with one of the most amazing teams of heart surgeons and cardiologists that I've seen assembled under one roof and the region's leading technology in a new $40 million facility. This is the nationally recognized Heart and Vascular Institute of Eastern Kentucky at Pikeville Medical Center. The Veterans Referral Center in Painesville will be holding a community yard sale on Saturday, April 15th. You know, it's spring. You know, it's starting to get nice weather. A lot of people have been asking for a yard sale, but the problem is not a lot of places to have them because all kinds of restrictions were just not enough space for a venue. And so we decided to, uh, we have a youth group and they were asking about yard sale because you know, girls and guys, they want to sell whatever they have extras to laying around and make money. So we said, OK, let's do a yard sale, but let's include the community and let them come on out here and sell stuff and just have a good day of everybody coming out and having fun. The yard sale will give members of the community the opportunity to sell some extra items they might have lying around their homes while also providing others the chance to find something they didn't know they were looking for. You know, a lot of people have a lot of stuff stored and they just want to get rid of some of this stuff and you know, other people could use the stuff to have stored away. The community yard sale will take place at the Veterans Referral Center from 9 a.m. until 5 p.m. on April 15th. Those wishing to sell items at the yard sale must contact the Veterans Referral Center ahead of time to reserve a spot. For Mountain Top News, I'm Kelsey Dean.


you know that's what you want you know we had a tough series against Boston but we know we bounce back and he came up really strong today give us what seven and two-thirds I think if I'm not mistaken or pitch really good you know that's what you want you know we got a lot of experience and just had a tone for us just kept on going kept fighting what did you know about him when you guys acquired him he's now thrown 11 and two-thirds scoreless and two outings for you so far well I facing a long time ago actually when I was with a dime bag so I kind of know a little bit about him and who faced him again and when it was with the twins but it's really good against us at all when they come up and he came over so we all knew what we got on him and you know got a lot of experience so this was really good as far as the offense is concerned got things going in both the fourth and the fifth inning what was it about the second time through the order that you guys were able to pick something up I mean our pitch is more in the zone we kind of know what it's trying to do so I think that's one thing everybody made adjustments quick and you know get a get a scoring going I think that's what happened you mentioned that Red Sox series clearly didn't go the way you guys would have liked this weekend is there any element of relief that you're able to come out here bounce back get the win and start moving in the right direction I mean it's not a relief you know the gap is big between us and them so I think we got sick out of keep fighting so there's no setting down you always got to go out there and play the best thing best game we can play so there's no relief I still got to fight


Yeah, thank you again. So I'm the second time you in this room. So in the morning I replaced a friend of mine, Max With this talk. So who has been in this room? I recognize a couple of faces My slides look a bit differently. So you see I have a different style of sliding. So Let's talk a bit about handling billions of edges. So about myself. My name is Michael. Can anyone hear me in the back? Good. So I'm working on Arango DB, which is a database company. I'm personally leading the graph development team there. So everything that is graph related goes over my desk. Started off with the graph visualization, which I handed over to a colleague. But all the graph features and especially graph smart graphs are designed by me. So introductory talk. So who has been in the last talk? I guess this is not new for you. What are graph databases? So first of all, graph databases store schema free objects, which they call vertices. So it means that you can have arbitrary attributes on your vertices and not every vertex needs to have the same attributes. So you can switch back and forth switching the logic of which attribute is there actually back to the client. Then they store relations between them, which they call edges. So here one vertex is for example, Alice, which has a name and an age and Alex has a hobby which has a name dancing and hobby would then be the edge. So connecting the vertices and the edges to one data row basically. Edges typically have a direction. So Alice is the starting point and this hobby is the target. All of the above could be done in a relational database. Plainly you have two tables for vertices, for example, and a joining table with two foreign keys would work. The difference come in in the query language. So for graph database, typically edges can be queried in both directions. So I can say, please follow the direction or go against the direction or I don't care for the direction. If there is an edge, follow it please. That works. And now the difference to SQL comes, you can easily query a range of edges. So let's say I have a starting point Alice and I want to select everything that is two steps away. So I can go over one hobby and go back to another person, Bob, not using the direct relation here. And that is really a one-liner. Even if I do five steps or 200 steps, that is a one-liner in a graph database. If you do 200 steps in a relational database, I think the query is like growing, growing, growing 200 joints and so. You don't want to write that, most likely. Unless you have something which allows for a recursive pattern like Postgres does. Even more, in most graph databases you can actually say, I don't know how many edges I need. I have a starting point and search as long until you find really the result that I'm looking for, no matter how many edges you have to follow that way. Or a shortest path between two vertices. So say we start here at dancing. What is the shortest connection from dancing to fishing? And the graph database will figure out, I start at dancing, go to Alice. Shortest way would be going to Bob and then go back to fishing. What are typical graph queries? Give me all the friends of Alice, which is like a one-step search. So I'm starting at Alice and I'm going one edge, the friends relation to all the friends of Alice. Giving me this result. Or give me all the friends of friends of Alice. Friends of friends means we go two edges. But everything we found in the first layer, so with one edge, should not be in the result. So example, Alice, I go one step to Bob. I go two steps to Eve. Eve could be in the result. Alice, I go one step to Bob and one step to Charlie. But Alice has a direct connection to Charlie, so Charlie should not be in the result. And the graph database can actually find those things pretty easily. Or given any two random vertices, what is the shortest connection between them? And this is not always a deterministic result. Because in this case, if I start at Alice, I want to go to Eve. I can either go via Bob or I can go via Charlie, both using two edges. Both could be a potential result for this query. And now comes the weird part. If I'm standing at a train station and I buy a ticket and it says, you can go up to six stops. You can change lines as often as you like. Where can I go? So I'm starting at this point and I'm allowed to go six edges long. So the graph database actually can do this in a one-liner and can find all the stations where I could go, even with switching lines. But the most typical one is the so-called pattern matching. Pattern matching is you have like a huge data set, which is your graph, and you define a subgraph, your pattern. Say, give me all the users that share two hobbies with Alice. Pattern would be we have Alice, we have a relation to one hobby. Alice needs another relation to another hobby, which is not the same. And then we need another vertex, which is a friend, having a relation to both of these hobbies. That would be the pattern and the database should then find all the friends of Alice that have two hobbies in common. Or, and now we make it a bit more complicated, give me all the products that at least one of my friends has bought, together with the products that I already own, but only 20 of them, or limit them by price or whatever. And you see what they were at this going, this is a super simple recommendation engine. Because probably what my friends buy together with the stuff that I already have is probably interesting for me as well. It's not the best one, but getting close. What are non-typical graph queries? And those are queries where graph databases typically don't perform well, because they're not optimized for them. So graph databases are really optimized for those queries that go alongside the edges, like these friends matching or pattern matching and so on. Graph databases typically don't perform so well if you are only querying across attributes, so not across the relations, but for the attributes. So give me all the users which have an age attribute between 21 and 33. Document store or relational database would be much more suitable for this type of query only. Give me the age distribution of all my users that I have, basically the same, or group all my users by their name. I don't. Yes, typically. Typically, those are just the queries where the graph database are not specifically optimized for. So relational databases are more optimized for those queries. Graph databases should focus more on the traversal stuff. I'm not saying that it's not possible. It's just the other ones put their focus more in that direction, at least from my experience. Because the major thing that a graph database does is the so-called traversal and how that works, I would actually like to explain by example. So first of all, we pick a starting vertex, which we find in a way that is as fast as possible. Then we have to collect all the edges for this starting vertex and collect all the neighbors that are connected with these edges. Then we can apply filters on the edges and the vertices and we end up with the first subset here. So now our traversal started at S and it will go on to either A or B because we said please go to edges. So it randomly picks, let's say A. Then it does the same step again, checks for all the edges that are connected to A, applies the filtering again, and we'll figure out OD is probably connected, but we filter it out. Then E is also probably connected. And then we have the first result, S to A to E. It has two edges and the filter is matched and this would be one part of the result. Then the traversal could continue here, but we said it should stop at two edges, so it doesn't. Instead it goes back to A, tries or checks if it is another edge that it has to process. In this case not because we removed D from the result set and E is visited. So we go back to S and check if there is another edge and here we find B. So we go to the unfinished vertex B which we haven't visited yet and apply the same pattern again. So we iterate down to B, apply filters on all the edges and go down to everything we find. So in this case SBF would be another result of this traversal query. Let's talk a bit about the complexity of such a traversal algorithm. First we have to find the starting vertex. How fast we can do that depends on the index. In best case it is a hash index then it's constant time to find it. If you only have a sorted index then it's logarithmic time to find it. If you don't have an index at all your database will be rather slow because it takes like the amount of vertices you have. So put an index on it and you can find it fast. But now comes the important part. So for every depth that we have that we want to search we apply the following four steps. First of all we find all the connected edges and this is either done by an edge index or with so-called index free adjacency. Both of them are basically required to be in constant time because this is most likely the operation the database will do most of the time. So that should be as fast as possible. Then we have a set of edges. Now we have to walk through this set of edges and for each check if the filter conditions that we apply match for this edge. If the filter conditions match for the connected vertex and of course we have to find the connected vertex. All of that can be done in one go so three times n is required only for these things. Linear complexity but as we do this for every depth that means we start with one vertex so one times three times n. But in the next step we actually start with three times n starting vertices. So that means three times n to the power of the search depth. That's the complexity of a traversal algorithm. However sounds evil but it's not linear in the total amount of edges and that's the great benefit. It's just linear in the amount of edges attached to each vertex. So if you have trillions of edges in your data storage stored but every vertex just has five of them. All your traverses will still be fast unless you search for a depth of five thousand or so. Because you only scale with all the edges connected to one vertex. There is a certain drawback that I will come to in a minute. And typically the number of edges connected to one vertex is much smaller than the total amount of edges that you store. So the benefit of traversals is they only scale with the result size. So if you increase everything you store in the database but the result size stays constant for one search will have the same performance. And there is a rule that I learned at university which holds true for all social networks. So everything that is grown naturally and that's the so-called seven degrees of separation. Seven degrees of separation means take any social network. So Twitter, Facebook, whatever. Take any two random persons. And you have an extremely high chance that the shortest path between those any two persons is of length seven or less. So that means if you have like an unfiltered traversal of depth seven that means that you are most likely returning like 99% of your graph database. As long as you have a naturally grown graph. If you have an artificially grown graph may not be the case. So let the user create edges. You have a high probability that you end up in this case. So expect this query to be slow on a large data set. So let me drop a couple of words about Rangody B because that will be the technology that I'm going to use to show you how to execute those queries. So Rangody B is a so-called multi-moder database. That means it can store key value pairs, documents and graphs with only one core in the same database. So I can use all the three data models with one query language and one process basically running on top of that and combine them in any arbitrary way. We have a query language which is called AQL which has document queries, graph queries, joins. All these things implemented in the same language and can arbitrarily combine all of them. And it has asset support for multi-collection transactions on a single server. So not yet on distributed version of Rango. How does AQL look like? So the syntax is not SQL because we found it rather confusing to like put 90% self-implemented stuff into a SQL. And yeah, let the users like try to use SQL statements but they kind of not work. So we decided we need a really distinguishable language which makes it clear that you're not writing SQL here. And of course SQL does not really fit to document stores and even not really to graph databases. That's why we settled for a new one which is more focused like XQuery. So a query that allows you to query XML. Basically you're always writing for loops. So for user in users means I'm iterating over a collection comparable to a relational table. And every row I find will be stored in the variable user and will be processed later inside the query and could for example be returned. Of course I can apply filters. So I can say please only return me those users with the name Alice. And the query optimizer can now figure out oh there is actually quite good index on this name. So it will automatically use the index in your query.  The optimizer handles that for you. So with this query we actually find everyone who is called Alice. And as promised we can combine it with graph traversals. So we now have at this point a user in our hand. And we want to continue starting at this user. So for a product which is again the variable returned by the following statement. In one outbound step starting at the user following the relation has bought. And return this product. Then we end up with this following pattern we start as Alice which is pretty much defined. Find one edge and connect to one product. Can also make it a bit more complicated. So the graph traversal statement can actually return three return attribute. So three return values. First thing is the last vertex that is standing on. The second one is the edge pointing to the last vertex. And path is the entire path. So let's say in this example if I'm standing at play session, play session would be my result for recommendation. This relation would be the action and the entire thing would be the path. Now I'm doing three steps or I can also put in here one, two, three steps or whatever. I'm using any direction so I don't care for the direction of the edge. I can go inbound or outbound whichever I like. And of course I can apply filters. So my filter would be the second vertex on the edge which is this guy here. Should have an age which is equal to the user's age plus or minus five in this range. So someone who is about my age. And for the recommendation the price should be less than 25 but only I want the top 10. Simple recommendation engine again, not the best choice but kind of works. And of course the optimizer will figure out if the second vertex on the path does not have this age, then it will not continue searching there. So optimization is handled but now let's talk about challenges. What is the first challenge if you want to scale a graph database? And I think that is the most common challenge. Supernodes. So supernodes in many graphs you have so-called celebrities. Super important people or items whatever which have many many many inbound or outbound edges. So let's say if you go for Twitter and you pick let's say Donald Trump. He has like super large amount of followers. So whenever your query walks over him you have to check all the followers of Donald Trump which are a lot. No political statement here please. And as we said the traversal scales only with the amount of connected edges that we have. So this guy will be super expensive. If your query instead would go over my account you have less followers unfortunately. So the query would be faster. However often you only need a subset of those edges. So in most cases you only need like the top 10 newest 10 or edges that have a certain attribute onto them. So what we can do as a first boost is the so-called vertex centric index. A vertex centric index allows to index an edge based on the connected vertex plus arbitrary attributes on the edge itself. It can then be sorted or it can be like only for equality like a hash index or whatever index type. Important thing it is connected to the vertex plus something stored on the edge. The thing is the index so finding the result in the index if it's not sorted is constant time at least for a hash index. If it is sorted it may be logarithmic time but still faster than fetching all the edges connected to that vertex and then iterating through the entire set. So if you have this index in place you have either less or no post filtering required. And thereby this decreases the end in this equation drastically. And you get kind of fast queries. But now let's come to challenge two. Big data. So we have big data now. A lot of companies out there just store everything you can so whenever you click with your mouse on a website it stores an event in the database. At some pages at least. And of course this also happens to graph data. So from our opinion on from our customers we see that the data set easily grows beyond a single machine. Even these super large machines that you can buy nowadays. Of course also for graph data so we need a challenge or we have the challenge to actually allow graph processing for more than one machine. In all the graph algorithms that we want. How can we do the scaling so the general scaling idea. Is so-called charting so you distribute the graph or the data set in general on to several machines in so-called charts. Chart means you have your huge data set you just chop it in parts and each part belongs on one machine. No machine holds the entire data set because the assumption is the data set is too large for this. However every machine could hold in theory more than one chart. So charting itself is kind of solved and kind of easy. Complexity comes if you like to query it especially in the graph area. So how to query it now. First of all we cannot get a global view of the graph. Because the assumption is it doesn't fit on a single machine so how should we compute it. And at some point we have to chop the data set. So what about the edges between service. Challenges in addition in charted environments the network most of the time is the bottleneck. So if you have a query that just constantly jumps between service. It's most likely slow. And so you want to reduce the network as much as possible and keep as much as possible on a local machine. So the target is to reduce network hops. Again we could use vertex centric indexes for super nodes. However they only work on a single machine. At least there is no distributed implementation that I know of right now for vertex centric index. So if anyone knows please correct me. So vertex centric indexes only help for single machine. Nevertheless so for one chart you could add a vertex centric index. So for one chart you could add a vertex centric index and it should be better than for local query. So now first let's distribute the graph. So what are the dangers of charting. So first of all only parts of the graph are on every machine. Neighboring vertices may be on different machines. And even edges could be on another machine. At least in the orangut db case I think for Neo4j that's probably not possible. I think you don't have this charting mechanism at all right. So if you just distribute the data randomly it could be that one vertex is here the edges there and the third vertex is over this machine. Potentially. Next queries need to be executed in a distributed way. So you need like some part that coordinates or I have to fetch some data here some data there and some data over here. And then the result needs to be merged locally so make sure if you have a distributed graph engine that your result is not the entire graph.  So distribution techniques.  The advantage of random distribution is every server takes an equal portion of data. Because the idea of random distribution is that I take every single object be it a vertex or an edge. Throw a dice and depending on the result I put it on one of these machines. I don't care for the surrounding. Random distribution is super easy to realize because master random is like pretty much implementable by everyone. And you don't need any knowledge about the data. So it works on any data set. Disadvantage. And this will be clear as soon as we distribute this graph on these machines. The neighbors are on different machines. You have totally lost the entire layout of the graph. It's like not connected anymore so reconstructing the original graph of this thing is quite hard. Probably the edges are on different machines than the vertices and a lot of network overhead is required for querying. Nevertheless it works but expect it to be slow. So let's first switch to the demonstration. Shortly so this is a RengarDB web interface. I have imported a social network which is called PoCake which is available from Stanford University for download. And I have imported it two times. One time with the random distribution. One time with the smart distribution that I'm going to cover in a minute. It has around 1.6 million profiles. If I'm not mistaken. It's not printed there in this resolution. And it has 30 million edges connecting those vertices. And the random distribution actually uses or places the documents and the vertices like somewhere in my cluster. So I'm running a three instance cluster, three physical servers. All of them running each in a RengarDB. Now I have a query. A simple two step traversal. So I'm starting at one vertex. I'm using the bind parameters here because I'm not changing the query later on. So I say the starting collection and a graph that I should use. The random distributed graph. I apply some filter on the first level and I just return the key because it's easier and I don't want the network traffic to slow down the result. So if I execute this query. And wait. And wait a bit longer. So in 1.5 seconds I can actually find 5700 vertices matching this condition. More importantly this time. 1.5 seconds. This is not what we aim for. So now let's go on for scaling. First of all index free adjacency. That is the mechanism that is used by most other graph databases. And that means that every vertex actually maintains two lists of its edges. The in and the out list and they are physically attached to the vertex. Has the advantage that we do not need an index to find those edges. Because whenever we fetch a vertex we have the list of edges. We only need to fetch the connected vertex again. But if we have this condition that it has to be physically attached to the vertex. How could we shot this? If we want to shot it in a good way. So first part is clear. Second part is clear. Where to put the edge. Because if I put it on the left machine. Only it would violate the condition on the right one. And vice versa. I could duplicate it. But then I need to have some logic that keeps both versions in sync. When I write to the different machines. ArrangedDB goes a different path. So we have a hash based edge index. Which is constant time lookup. Because it's hash based. But this makes the edges independent from the vertices. So the vertices just know okay I have to ask there. And find my list of edges. But this actually allows us to like pick any of these two servers and saw the edge there. And are not forcing us them on a on a specific machine. But now comes the tricky part. Domain based distribution. So what we have found in our customers is that many graphs have a natural distribution. Natural distribution means that most parts of the graph are actually on. Largely connected they share a common property. So for example if you have a social network. Friend network. Typically most of your friends will be from the same region or country. Then you are. You will have some friends abroad. But most of them will be local. Or if you are having storing blocks in a in a graph for whatever reason. Probably blocks with the same tag are related to one another. Category for products. And couple of more. Just some examples. So for this distribution means most edges are only inside the same group. So connecting people from Brussels. And you have rare edges between different groups. But still they are allowed. And if we now apply the domain based distribution on this graph. We can actually shard it in a bit better way. If we use the domain as a sharding attribute. And there we put large parts on one machine. Another large part on the second. And another large part on the third. And we have a choice where we put these edges. So either this or there or there. If the database now knows that this condition is true. That most of it is actually on the physical machine. It can do much much more operations locally. Which are much faster than if you have to do network in between. However, this is only available in a Rangody B Enterprise Edition. And if. We use this domain knowledge for shortcuts. Where's my demo. Over here. So same data set. And I'm just using the different distribution of the data across the service. So only thing I change is I'm not using random. But I'm using smart. And off we go. One, two, three. 300 milliseconds. Exactly the same result. So if you want to, you can compare those things. But we could make use of the knowledge that we have most of the data local. And just somewhere we needed to do a network hop to get and collect the other parts of the data. I have seen much more impressive numbers on some of our customer data. Where they could in best case like fit the entire graph or parts of one customer graph on a single machine. And just needed to shot because they have many customers. And then they get really down to single server performance. Although they have an arbitrary scalable cluster. At the hands. Yeah, skip this animation. Good. How does it work? So this is the Rangody B's architecture in the cluster. We have database service responsible for the data. And we have coordinators which are the user facing servers. So the user asks a coordinator with a query. The coordinator will figure out which database servers play a role. Distributed down to the database service and they physically fetch the data reported back. So if I now create a long path. Which is actually quite sorted already. Just for the sake of demonstration. We see here that we need one, two, three, four, five, six network hops to collect the entire result set. If we could shot it a bit better. We can get away with a single one. Much faster. And this is the whole idea on how we actually get a lot of speed in a scaled network for point queries. Question please. So the query is how we like remove these shots, these vertices around if we do it adaptively or if the graph is loaded. So for the version released, you have to give the sharding attribute upfront. And we put the vertices by that sharding attribute. Our plan is to do this more adaptively in the future. But that's not implemented yet. Yes, please. So the question is what happens if the graph changes over time. The assumption is that in most cases distribution kind of stays the same. Of course you will have people that move out into other areas. So for these, actually the query will get slower. Because then the condition first doesn't hold anymore because most friends will be in a different location. But over time, probably the friendship changes. For this guy as well to the next or local area. So it may be possible that if that changes, some queries may be slower than before. Because the distribution changes for certain vertices. But in general it works out quite well. Because the core of distribution doesn't change like randomly around. In most cases. So the question is if the sharding key has to be defined on every vertex and that's true. Good. Time for questions. Any questions for Michael? Yes, please. Today you learned a lot about the languages like OpenCypher or Gcore or Pgql. Did you at some point consider also implementing that kind of language? Yeah, so the question is if we have considered implementing different query languages. So we have thought of it for sure. But the thing is we are a multimodal database. So our query language has the requirement that it can cover all the data models that we have. And graph query languages are typically designed only for the graph module. So for us it won't be able to handle like 500 query languages which are out there right now. Okay, I have a question. Yes. Because the talk is titled handling billions of adjust. What were the largest deployments of Arango to be that you used to smart sharding for? In terms of how many Bayon edges? So the question is what was the largest setup that we have seen so far? So it was above 1 billion vertices but I don't have the numbers like in the back of my head. Above 1 billion and 10 or 20 times as many edges. So works out quite well. Cool. Yes, thank you so much. I have t-shirts. So whoever likes.


So, we are coming toward the end of this course actually, so there are just two more classes including today, today and then one more. And we have come a long way in Fano's analysis of the interaction between discrete bound to bound transitions and bound to continuum transitions. So, we have a situation in which a bound to bound discrete state is embedded in the continuum and we constructed the energy matrix in our previous class which has these elements right. And then we set up the configuration interaction which has got both the components the discrete state as well as the continuum because of the C i this is a result of the correlation which is ignored in the independent particle approximation. And then we used the Dirac Fano trick of using this Dirac delta function integration whenever the coefficient B would appear in the integrand. So, using that we agreed that the function z or z would be would correspond to appropriate boundary conditions and which is what gave us this form and we found the coefficient A e according to this. And I had pointed out that V e has the dimensions of a root of energy, so V e square would be the energy and it would correspond to the energy width of the resonance. So, now you have the complete configuration interaction wave function. So, it has got a discrete part then it has got this principle value integration and it has got this continuum state with scale by the factor z which is coming from the boundary condition. Now this is the width the gamma this is the width of the resonance and as you always have you know it is reciprocal scale by the factor h cross would give you the lifetime of the authorization state. Now our interest as we always emphasize in scattering theory is in seeking asymptotic solutions what happens as r tends to infinity right that is where you carry out your measurements. Now this discrete state function this is the bound state function, so it would vanish in the asymptotic limit, so there are 3 terms over here 1, 2 and 3 out of which this term goes to 0 as r tends to infinity ok, so we can drop that off ok. Now we are left with these 2 terms out of which this particular one is something that we have some familiarity with from scattering theory it is the principle value this is the term that we will have to determine. So now the r tending to infinity solution will be given by the remaining 2 terms, so these are the 2 terms which we are now left with for our analysis and now I have these 2 terms which describe the asymptotic wave function, so this is the de Broglie Schrodinger wave function the coordinate representation of the state vector and this one coming from scattering theory is the usual sinusoidal function by r plus the usual scattering phase shift which is in this case is the background phase shift. So this is known and what we have over here is pretty much the same except for the fact that this is weighted by this interaction term V e, now V e if you remember is let me go back to the previous slide if I have it on this slide or no I do not have it on this slide do I have it on the one prior to this here V e is nothing but the energy contribution to the energy matrix coming from the interaction between the discrete and the continuum right it is this interaction which is resulting in the V e, so that is the configuration interaction term which is contributing to that. So let me go back to this slide over here and here this wave function here is pretty much of this kind except that it is weighted by this configuration interaction V e right, so this has this usual sinusoidal behavior divided by r and then there is a phase shift coming from the background scattering phase shift then there is an energy dependent normalization this is the bound state wave function which is normalized independently it is the square integrable function. So this is well understood and this is the background phase shift as I mentioned earlier so we can write these two terms and look at the second term here the second term is just what I have written over here, so what is in this red box comes here with this explicit form inclusive of this energy dependent normalization the sinusoidal function by r and the background phase shift which is here. And now we look at this term out of which A e V e are here right the chi 0 r 2 coming from here comes here and then you have got this term which is similar to this except for the fact that now you have this A e V e prime popping up. So this is what takes care of the configuration interaction but the only thing is that now you have to deal with only the principal value of this integral. So one can work out this principal value integration in some details and all of you would have done this in your math physics courses and instead of going through all those detailed mathematical steps I will comment on the essential physics which goes into this analysis and here notice that this term is over here what you should remember that this eta e is a function this eta is energy dependent normalization it is a function of energy and this eta is the same function of energy. So if this is known this is also known so that is coming from usual scattering theory. So these two are essentially the same functions of energy except that the argument is different. So now our question is how to determine this principal value integral and that is what I will now discuss and I really like the treatment in this paper which came about ten years ago by A R P Rao who was I believe Fanot's first student and he has this paper the title of this paper is perspectives on Fanot resonance formula which he wrote in physical script quite recently just ten years ago considering that Fanot's paper is so old it is relatively recent and what Professor Rao said yes is that we focus attention on the essential dynamics which is going into it rather than get lost in notation symbols and other factors which are not contributing to the main terms which are the focus of our discussion. So when you write the complete wave function you will of course have lots of factors you will have to worry about the logarithmic coulomb phase shift you will have to worry about the phase shift coming from the orbital angular momentum there is always this l pi by 2 phase shift which we all know right. So all of these terms will be there and he says that we will remove them from our discussion to simplify our notation and to simplify our discussion so that we focus on the essential aspects. So I am following this prescription by Professor Rao and what Rao does is to point out that the asymptotic structure of the pure continuum is given by this regular function which is a sinusoidal function okay the radial function of course has got that 1 over r so this is the radial function times r okay now this is the pure continuum. Now we do not have the pure continuum what we have is a configuration interaction between the discrete and the continuum so now when you have a superposition of a discrete and a continuum then the regular part alone will not be able to give you the full wave function you will need an admixture of the regular part so the solution will be some sort of a linear combination of a sinusoidal and a cosine function and whenever you have such possibilities then you invariably have a phase shift resulting from this okay which we have seen n number of times in our analysis of collision physics. So this will generate an additional phase shift and this is coming from the interaction between the discrete and the continuum and this is the configuration interaction so this results in an additional phase shift so that is what we are going to focus our discussion on today. You can also have additional terms in the potential for example in more complex forms of the potential when you take more realistic potentials many electron system then you know that the SO4 symmetry of the hydrogen atom is broken inside you know close to the core you have got a very complex form of the potential the potential is no longer 1 over r over the entire region of space and what one often does in other formalisms like quantum defect theory which is to partition the space in a short range region and a long range region when you do that you can separate the total phase shift in a short range part and a long range part when you do that again you will have a such a separation which is possible and you will have additional phase shifts which result from that. So our interest is in handling this particular integral out of which this part will go into the normalization as you can see this is scaling this wave function and the essential problem is in the evaluation of this integral other than the normalization part which goes into the integration of this function sign over the energy difference that is the main integral that we have to solve and we already know that these integrals can be solved using the Dirac-Fano procedure. So you insert this prescription which we have used in our discussion in our previous class and here this C e prime has been appended so that it will take care of this normalization A e v which is coming here that is this additional normalization this one is already there in the other normalization of the scattering solution. So this is contained in C e prime. So now this normalization has got v e which is nothing but the coupling matrix between the discrete and the continuum as I pointed out. Now this function over here has got 2 terms odd and even. So you can take 2 other terms like if you can write your sinusoidal function this one in terms of cosine k prime minus k and assign k prime minus k and this is just a trigonometric identity that you exploit. So you have got a correspondence from which you can determine the phase shift in terms of the z and c. So that is the trick that is the essential trick then rest of it is just plugging in and evaluating the integrals which is of straightforward procedure. So using this you now get so this is the expression for the sinusoidal function in terms of this trigonometric identity and now the solution is now just a superposition of this sine and cosine and this is this integral is easily solved the solutions will give you z e and pi factor. And I have just moved this C e inside this so that I have got C e z e and sine k r plus C e pi times cosine k r and you can see an additional phase shift popping out of this and you can get it if you introduce this angle delta this triangular delta as I have used. And if you introduce this delta as tan inverse as negative tan inverse of pi over z you can write this function as a sinusoidal function with a phase shift. So this is the additional phase shift which is resulting from the configuration interaction. Now this is what we have been expecting that the configuration interaction will essentially generate an additional phase shift. So that is this delta and the actual function that we wanted to work with was this so we used the simple analysis from Raou's paper. So we use that result and put it over here get the solution in terms of the cosine and the sine functions get the corresponding phase shift which is nothing but the same exactly the same expression which is negative of tan inverse pi over z ok z we have determined earlier from the boundary condition. So this is what the configuration interaction does which is to generate an additional phase shift. So the configuration interaction results in an additional phase shift which is negative of tan inverse pi over z. So this is the additional phase shift and your complete wave function now has got this one. So we have got the complete solution now. So the background phase shift was already there the kr term is always there right. We are dealing in this case the we dealt with l equal to 0 state so there is no l pi by 2 phase shift but otherwise that would also be there. So in more general forms of the solution you will see some additional terms and then you have got this resonance part this is coming from the resonant auto ionization resonant part of the interaction. So this is the additional phase shift z we have already introduced earlier. So this is just to summarize the essential results ok and notice that you have got the difference between the energy and E phi where E phi is the contribution to the energy matrix from the discrete states ok phi d is the discrete state. So the farther E is from E phi ok the lesser the contribution you would expect as is natural to C ok because if the discrete state is not close enough to the actual resonance process if the continuum energy is not close enough to the resonant process then the resonant part of the phase shift will become small ok. So if E minus E phi is large the resonant part of the phase shift will become small alright. So what happens is that over this width gamma which is which goes as V square over this width the resonance part of the phase shift however changes rapidly and it goes through pi as we have discussed in our previous classes. So the resonance energy as you see is when this denominator would vanish so this is when E r would become E phi plus F E so that becomes the resonant energy. So the resonance energy is not necessarily the energy at which the cross section is maximum or minimum the criterion for the resonance energy is this it is it relates to the phase shift and not to the cross section cross section and everything else comes as the consequence of that. So I would like to highlight some important references in this context in addition to Fano's original 1961 paper in which many things are worked out in the appendix of the paper. Macy and Burhip is an excellent source which is chapter 9 in their book which is volume 1 of this then Carvin's book I have referred to I have included that reference and this paper by Professor Rao which I cited just a little while ago. So these are excellent sources for a discussion on this point. Professor Rao also points out some very nice things which are nice to visit that if you look at the usual expression for the scattering cross section in terms of the sine square delta this is the usual expression you can use a simple trick to write this sine square delta in terms of these two cotangents of two different angles delta minus delta a and cotangent of delta a. So this is just a trigonometric identity and Macy and Burhip also do a similar thing but in a slightly different way and using this you can immediately see them relate to the Fano parameters q and epsilon. So they come so neatly out of this. So there are some very nice things which you find in Rao's literature and also in Macy and Burhip. Macy and Burhip do it in a slightly different way I will show you how they do it. So they go it is essentially the same idea so they go back to this expression in terms of the modulus square of the scattering amplitude and then break up the phase shift into the background part and the resonant part as we are quite familiar with already. And then they use certain trigonometric identities in terms of which they write this scattering cross section this is after doing a little bit of trigonometric manipulation and then what they find is that if you ignore the background contribution you get essentially the Breitwigner formula which we have already seen how it relates to the Fano parameters q and epsilon. So these are certain profiles that you get for this scattering cross section and the scattering cross section actually comes in all kinds of shapes. So these are different profiles naturalized shapes for different values of the q parameter of the Fano q parameter you can get very many different kinds of shapes and the resonance energy is given by this criterion E phi plus phi E as I mentioned earlier. This is the resonance width this is the width over which the phase shift changes rapidly through pi. The width is determined by the energy matrix contribution coming from the interaction between the discrete and the continuum. So that is what determines the width of the resonance. Lifetime is just the inverse of this width and one must remember that the idea of lifetime is quite different from the idea of what is called as time delay in scattering. So I will spend some time discussing the time delay in scattering. So before I do that I would like to show that some of these ideas are of immediate interest for the analysis of authorization resonances in every such group. So these are Moody's results and what there are other additional complexities because we have just dealt with the lifetimes and so on. But then what about the character of the resonances and so on there are many additional complex questions which come up and those are left for those of you who will reach original literature and move ahead but these have immediate interest in several research problems. Here is a figure of a funnel resonance, Shiva's result. So thank you very much Shiva for lending me this picture. Shiva also told me that the quality of the signal is considered as a measure of how good the setup is. So the next generation of the synchrotron is identified by the quality of the spectrum. So the helium spectrum is still used in characterizing and in calibrating in particular all the calibration procedures. So these are very exciting things and we have people over here who work with these things so it is nice to have you all in the audience. And I will now come to this time delay in scattering which is an idea which is different from lifetimes as I mentioned. And this comes from the analysis of Eisenwood and Wigner and the original analysis came in the context of phase shift analysis of S wave scattering at low energies. So typically if you have a free electron wave packet it is a superposition of a number of plane waves and this wave packet travels at a certain group velocity that group velocity is d omega by dk as we know from you know our studies of wave packets. There is a certain mean momentum okay which I represent by p0 corresponding to which I have got a wave vector k0 and what happens after the scattering if this wave packet meets an interaction potential it continues to propagate it continues to propagate at the same group velocity. The group velocity does not change there is it is transmitted through the barrier so let us think of a simple one dimensional case it goes through that but then it spends a little bit of time in the interaction region so that the transmission coefficient will be complex and there will be a phase delay coming as a result of that. So phi is a phase factor and the transmitted wave packet because of this phase factor it would appear whenever there is a phase lag okay what is the phase lag represent it says that okay if a wave front was to arrive at a certain time it is arriving either sooner or later. So there is a phase shift right and that means that as if it has originated from a different point of space that if it were to have originated from a certain source point if it is arriving earlier it would appear as if it has arrived from a point whose source is not here but closer if it is later it is like coming from a farther distance. So there is a spatial phase shift associated with this and this phase shift it would appear as if it is coming from a different point which is d phi by dk okay rather than from x0. So d phi by dk then is the spatial phase shift and if you divide this by the group velocity you will get the time delay right. So the time delay is nothing but this spatial phase shift divided by the group velocity and you can immediately see that this is nothing but the energy derivative of the phase shift. So this is the time delay in scattering theory our interest of course is in scattering in biospherical potentials and we are in a position to discuss this at some length because we have dealt with this in an earlier unit in considerable detail and in particular I will like to draw your attention to the lecture number 8 in unit 1 of this course okay and there is a discussion on slide 147 through 150 where you will find these details and you have already been through this but let me remind you some of the immediate results which are of interest to us. What we discussed at that point is that the radial function if there is a 0 potential so it is like a free particle which is propagating its solution will go as a sinusoidal function apart from the angular momentum phase shift l pi by 2 whereas when you have a potential there is a phase shift resulting from the scattering potential right. What it does is it changes the positions of the nodes because the node will come wherever the sinusoidal function goes to 0 and the argument of the sinusoidal function being different the position of the nodes is shifted okay. So we had drawn these pictures from Josh and his book okay and we discussed these solutions that the nodes are either pushed or pulled depending on the potential being either repulsive or attractive and accordingly you get a negative phase shift or a positive phase shift okay. So these details are there in Josh's book we discussed them in unit 1 and this is what happens that the positions of the nodes are given by what is the value of this right argument of the sinus function and in this case when it is pushed when the radial function is pushed the scattered wave emerges ahead of the unscattered wave and the unscattered wave is a free particle wave right. So the scattered wave will come ahead of that whereas in this case it is delayed it will come behind the unscattered wave and that is the time delay. So time delay will be either positive or negative depending on whether it is pushed or pulled okay. So there is an advancement of time or a retardation of time which goes according to this. Now we were very careful about it because we need to treat this as a wave packet okay because the electron is ejected as a wave packet and we conceded that this particular form of the scattering solution with the outgoing wave boundary conditions okay inclusive of the time factor this is written for a strictly monologetic beam which is an idealization whereas the actual particle will be described by a wave packet. So this is a realistic incident packet which is a superposition over a number of different momenta okay. So this may have a certain narrow range but whatever but it is not sharply mono energetic. So you have a realistic incident wave packet and we had asked the question if this relation d sigma by d omega being given by the modulus square of the scattering amplitude does it work also for a realistic incident wave packet when it is described by a superposition of a number of mono energetic waves and not just a mono energetic wave. So some of you will remember this discussion from unit 1 okay but otherwise you can refer back to those lectures and this point was discussed over a number of lectures in that unit lecture number 4, 5 and 6 of unit 1. So this is just to remind you of way to look back for the details and here if you look at this incident beam it has got this complex amplitude for each monochromatic wave. So this e to the i alpha k phase gets added up to this phase so you get a net phase of this function which is given by e to the i beta k and if beta were to change rapidly with k okay there would be so many oscillations that the incident packet would disappear. So the condition that it would not happen so that you have scattering at all is that the gradient of beta would be 0 right. So that is the condition that we discussed and when we put this condition we found that the wave packet moves at a certain group velocity which is given by this gradient of omega with respect to k as we always find right. So this is the relation that we get and you can write it in terms of you know like a kinematic equation r equal to vt plus r0 like in undergraduate mechanics courses right. So where the velocity is given by this gradient of omega with respect to k so you see that similar relations as we dealt with in the one dimensional case are present over here as well so we get essentially the same kind of consequence. We also considered the incident wave packet to come not head on at the target but if it is slightly displaced through an impact parameter and when we considered this we found that we can still write the scattering solution in the same form except that we now have an additional function which described the shape of the wave packet right. And we found that the scattering amplitude is given by its modulus and a phase factor and this phase is no longer just the phase of the mean momentum wave packet with the mean momentum but you have to expand it around it in a Taylor series. So you have got the leading term plus the first derivative times the difference of the momentum vectors. So this is what this gradient of the phase with respect to k is what is written by the by Rho this is I am following the notation from Jochen's book quantum collision theory and now you have got this phase which has been written which has been expanded about this mean momentum the phase for the mean momentum. The net phase is this this is the total phase right so this is the total phase which I call as zeta and this is the net phase angle of which these this part is given by these two terms are come they come over here and over here I simply separate the magnitude of Ki from the direction of Ki. So the last equation is nothing but the one prior to that except for the difference that I have separated the magnitude from the direction of this Ki and I do it for a reason because now you have this as the phase angle and you can ask the question how would you describe the surface of the scattered wave which is propagating along this particular unit vector and on this surface you would expect that d zeta by dk must vanish because that is the criterion for having a surface of constant phase. So this must be the criterion so you can put d zeta by dk equal to 0 what does it give you you just take the derivative of this term with respect to k put it equal to 0 you get an equation again the same kind of kinematic equation and you find that there is a spatial phase shift you divide the spatial phase shift by the group velocity you get the time delay. So this is the time delay it can also be a time advance of course depending on whether the potential is attractive or repulsive so this is the time delay in scattering. So this is essentially coming from the gradient of the phase with respect to k and what happens is that the wave front appears to have originated from a different point rather than what would seem like the origin of the wave front if it were to be traveling only at vi velocity vi over a time t starting from the origin so the origin is displaced so that is the spatial phase shift and corresponding to this phase shift if you divide it by the group velocity you will get the time delay because any change in phase will then result in the time delay. So this is the derivative of the phase shift with respect to k d delta by dk and now if you recognize the relation between energy and momentum which is h cross square k square by 2m and write this as d delta by dk so this dk now you write in terms of de rather than dk then you immediately find that the time delay is nothing but the energy derivative of the phase shift in units of h cross so that is the time delay and this is the analysis originates in the work of Eisenwood and Wigner. Smith has some nice work on this and with that I conclude today's class in the next class I will sum up show some applications of the various topics that we have done and that will pretty much conclude the course. Any question?