This 2012 Chevy Camaro 2SS convertible is stock number 11943Z. We are here at Summit Automotive in Fond du Lac, Wisconsin. You're new and use sports car headquarters. This 2012 Chevy Camaro 2SS has the 6.2 liter V8 motor. It pumps out 400 horsepower when combined with the automatic transmission. This car has been fully safe and inspected by our service shop as a fresh oil and filter change. All the fluids have been checked and topped off. And this car is 100% ready to go. Silver Ice Metallic is the color we shoot all of our videos in 1080p, 60 frames per second. So if you have HD capabilities on your computer, tablet, smartphone, or television, turn them on right now. Because it is definitely your best way to check out the quality and condition of the car before seeing it in person. If you like the video and want to subscribe to our YouTube channel, in the lower right hand part of the screen is a subscribe button. Click that and then click the bell notifications to get updated every time we do a video of one of our amazing pieces of inventory here at Summit Auto, which we do each and every day. This one comes with 20 inch MRR rims. They're painted black. They look really good. In the front we have like new Pirelli P0 to 7540ZR20 tires. When I say like new, you can still kind of see the little wear knob from when it was pressed. So they have a lot of tread left on them. Has the Brembo brakes. Front fender, no dents or dings on there. Looks really good. Comes with the HID headlamps, the LED running lights, and the factory fog lights. As we come around the front bumper, no major dents, dings, cracks, or scuffs on there. The hood is in pretty nice condition as well. You do get the black hood decals and those are all looking really good. And I didn't see any dents or dings on the hood. Coming around to the passenger side, front fender looks good on this side as well. Passenger side front rim, no scuffs or scrapes on there. And as you go down this side of the car, take note of how clean the body is, how reflective and mirror-like that paint is. We take these HD videos so if you are far away or even if you're close by and just cannot make the trip down, but you're still interested in purchasing the car, you can see the car, hear the car, and have confidence in the vehicle that you're looking at before you even get here. So when you do get here, there's absolutely no surprises and you can make a smart buying decision. From the comfort of your own home. And that's why we do the videos. Down this side, door looks pretty good. Didn't see any dents on there. This back rim is in excellent shape as well. And the back tires have a lot of tread left to them as well. I'd say probably 70, 80% on that back tire. Coming around to the back of the vehicle, rear bumper is in nice shape. It does have the backup parking sensors. This one also has a backup camera. You do get the chrome tipped exhaust, deck lid spoiler and trunk lid look really good. Coming around driver's side, rear quarter didn't see any major dents or dings on there. And for full disclosure, this back rim is in excellent shape as well. Rest of the door looks pretty good. It does come with heated power mirrors. We'll take a quick look in the trunk. And then we'll check out inside the car. Back storage area is nice and clean. You do get an all weather format back here. If you ever wanted to know where your RPO codes are, they're right back here. So feel free to pause that to make sure that this one has all the options that you're looking for. And we're going to be putting that soft top up in just a minute here. So we can check out the condition of the soft top inside. The 2SS package gives you the black leather interior. There are no rips or tears on the seats. They look really good. Both these front seats are heated. You do get factory floor mats, auto headlamps, power windows, power locks and power mirrors. Boston premium sound system. You get the metallic silver finish door and dash trim. You can see it does have a little bit of metal flake there. Always like that. And then it wraps around the dash all the way to the other door. The back seats, just as clean as the front seats, no rips or tears back there. And you do get the latch child safety system to get car seats back there. I would imagine it's a lot easier to do when you have the top down. We'll hop inside. I'd take a look at the ignition and the radio and everything that the interior has to offer. It does have remote start on that key fob there. You can see that this car has 41,532 miles. You do get a digital speedometer, compass display, leather wrapped steering wheel that is in excellent shape. Bluetooth and audio controls on the right, cruise controls on the left. And you do get the paddle shifters because it does have the automatic transmission. Now this one does have the heads up display. You can see you get a digital speedometer, compass, outside temp in the windshield. And you can turn that off or move it up or down however you want. It has a CD player, AM, FM and Sirius XM radio capabilities.  Stability control and your six speed automatic transmission. Passengers side, floor mat and seat are in excellent condition. I don't think this car was ever smoked in, smells very clean inside. Up here you get your home link buttons for your garage door security systems and lighting systems, map lights and on-star capabilities in the mirror. I will get that soft top up so you just got to press this button here and I'll show you that that is working nicely. And then we'll check out the soft top, start it up and take a look under the hood. So once it gets up to its spot just kind of pull it down, turn it and then that locks into place like so. We'll put the windows up and then we'll start it up and take a look under the hood. Starts right up, no check engine lights or anything like that. I did want to show you that it does have the backup camera in the rear-view mirror which is kind of a neat feature. And we'll take a look under the hood. I would personally like to thank you for checking out the video today and hopefully from this HD video you've been able to tell just how clean this car is all the way around inside and out. Didn't see any rips or tears on that soft top, it's in pretty nice condition. Under the hood we have the 6.2 liter V8 motor. Engine bay is very clean, runs very smooth, does have an air-aid cold air intake. And once again this car has been fully safe and inspected by our service shop has a fresh oil and filter change. All the fluids have been checked and topped off for the state of Wisconsin inspection process. There's your emission sticker. And this car is 100% ready to go. There are those HID headlamps, LED running lights, really nice car. And to see more pictures of this car, one of our other 450 new and used cars, trucks, SCVs, minivans, Wranglers, Camaros, Challengers, Chargers, Corvettes, you name it, we got it. Go to that website, www.summitauto.com, full pictures and descriptions of every single vehicle from two locations. All at www.summitauto.com. If you'd like to check out more HD videos, you can go to www.youtube.com. Remember to like, subscribe, and share on this video and all the videos that you see there and click those bell notifications. Get updates on the videos we do each and every day here at Summit Auto. In fact, in a second you will see a link to subscribe to our YouTube channel, the upper left. A link to more Camaro videos like this one in the upper right. A link to this vehicle on our website in the lower left. And a link to one of our latest YouTube videos in the lower right. Click those, check us out. And we really look forward to helping with this Super Clean 2012 Chevy Camaro Convertible 2SS in Silver Ice Metallic. Thanks again for checking out the video. Remember to like, subscribe, click those bell notifications, and share with all your friends. Thanks again.


All right, thanks. Thanks, Irene. So throughout history, people have been recording sequences of events so that they can reconstruct and tell stories about the past. Now today, I'm going to talk about visual representations of these sequences of events, about timelines, and the different types of stories that we can tell with them. So I'm going to show you a lot of design choices and examples today, but what I also promise to give is a structured way to think about this design space. And then finally, I'll introduce a new tool that my colleagues and I at Microsoft Research have to tell expressive stories with this type of data. Now in order to talk about timelines, we first need to start by thinking about time itself, and specifically about how people use spatial metaphors when thinking about time. Because I'm speaking to a room of visualization people, I think we're all pretty good when it comes to mapping the dimension of time to coordinates on a page or a screen. So let me put some questions to you. I'd like you to take a moment and ask yourself the questions that you see appearing here. The question is, where are these moments in space occurring relative to you at this moment right now? Not when. So if you were to draw this, where would you put the future? Where would you put the past? And as your visual metaphor for time, does it change depending on the distance to the event and the scale of that event, its duration? So I put these questions to you because the ability to visualize time and space, it's an ability that people have to learn and refine over time. It differs from person to person. It differs as we age, as across cultures and across application contexts. So how many of you thought of a straight line as the line of time? So probably most people, right? As an arrow from the past to the future. But which direction did your arrow point? So depending on your cultural background and your first language, how it's written, maybe your arrow pointed to the left. Maybe it points downwards. Maybe you're on Twitter right now and your arrow is pointing to the most recent tweet. So how many of you thought of a different visual representation for time when any of those events, those questions I had on screen? I think so a few people maybe. So even if you didn't, I'm gonna talk about some alternative representations for time today, hopefully give you a sense of when to use each of these different representations. And I'll begin with this most familiar, this time as an arrow metaphor. So this representation for time, it's dominated the design of timelines now for several centuries. It was first made popular by Joseph Priestley, is a chart of biography here, which she's mapped the dimension of time running from left to right. And he's drawn the life spans of several notable historical figures along this timeline. And he's offset them vertically just to avoid overdrawing. Otherwise, there's no real meaning here to the y-axis. There's just a faceting that's going on here between statesmen or politicians or leaders at the bottom. And men of learning are philosophers at the top. So this representation, this type of design is still very popular today. So here's another example, it's much more recent. This is a timeline of Guantanamo detainees. This was by Jonathan Corm for the New York Times a few years ago. And here, it's the same idea. Each horizontal line that you see is a time that an individual was detained between 2002 and 2011. It's a very large graphic. In these cardinal directions, they work great for print and static images, especially when giving a bird's eye or an omniscient view of time. But another common mental model that people have for time is one that's egocentric. It puts you along the line of time. And that arrow is like taking a trip down a museum hallway and examining its contents over time, walking into the past or walking into the future. And we can see this egocentric view of time in examples like this one. Here's just a depicting the history of the Tower of London. And it's a bit like standing on an airport sidewalk, moving sidewalk on the airport and the time actually flying past you. Another really common way that we represent time, it's the circle. And especially when we're representing natural cycles, events that repeat, biological life cycles, seasons of the year, some of our daily routines, like when we sleep, when we eat, when we relax, when Beyonce performs. What if your data doesn't contain cycles or periodic repetition? Is it still okay to use a circular or radial representation for this type of data? So this example, this is Georgia Lepus' circular depiction of her life history. This was done as part of the Dear Data Project a few years ago. And in this example, her birth is at 12 o'clock. Her current age is at around 11 o'clock. At that point, that timeline here, it veers upwards and it trails off into uncertainty with these dotted lines, not back towards her birth. So it indicates this discontinuity here and still yet uses a radial representation. But here's another example. So this radial timeline, it depicts the Arab Spring beginning in late 2010 and the different events that entailed different countries. So this chart was featured on the information is beautiful site a few years ago. A lot of people really liked it. There's some ways that we can think of improving it though. Like this discontinuity between the end and the beginning of the timeline, maybe a bit misleading. And also the timeline spans 13 months and not the annual convention of 12. So this prompted Alberto Cairo to design this as a linear timeline. Certainly, it's more efficient for comparing the beginning and ends of events across these different countries. But you might argue, and a lot of people did when he published this that it's not as aesthetically pleasing, appealing as the original. So I say wanna have it both ways. So here I've taken the same data and I've tried to, I'll draw the viewer in with an attractive radial representation. Albeit one that shows the discontinuity between the start and the end, that gap in the top left. And then I'll use an animated transition to transition to a linear representation that allows the viewer to make more accurate comparisons across these countries. Or I could fast at these data into a radial small multiples and that maintains the same amount of screen space devoted to each of these individual countries. Perhaps you're more inclined to see time as both linear and stick, as linear and radial, as a coil or a spring or something that repeats, but yet it spirals upwards or forwards like this spiral staircase. And this spiral metaphor, it's particularly effective when we're depicting processes like growth, like a vine wrapping around a column. So this example here, this is a bunch of spiraling timelines that Moebio Labs created for the Ross Institute and it emphasizes this interconnectedness, this repetition growth that occurs in K to 12 education. Now spirals, at least to me, they evoke the slinky toy. And the slinky toy, it adds a new dimension to how we think about visually manipulating time. That's the ability to bend it, to compress it, to expand it into new larger shapes. So if that's too complicated, we could think of the linear analog to that and that's the accordion of time. And this is already a metaphor that we already use when laying out these collapsible elements and user interfaces. So can we do the same thing for time? So you can similarly imagine collapsing representations of time and to do this I'll use this example from several centuries ago. This is Gerardus Mercator, so of map projection fame. He also doubled in the art of chronology. And this is a page from his chronology from the late 16th century. Now his contribution, it was to indicate a more precise passing of time in the margins next to these written descriptions of events. So he was using fewer tick marks for sparse periods of history where there was nothing recorded and more tick marks when a precise date was known for an event. So looking at this now you could imagine collapsing these sparse periods of history with some interaction or animation but still retain some indication that an event has occurred, that time has elapsed. So I'm gonna illustrate this idea just by drawing here a timeline of 50 years of category five hurricanes from 1960 to 2010, beginning with dawn on the 60s and Katrina's 2000s. So I can collapse this chronological timeline but still retain the sequential order between them. And then I can show the time elapsed between these hurricanes using these bars. This shows something different from that chronological timeline before. It indicates that there's been some fluctuation in the periods between these hurricanes and that they've been getting shorter in the past couple of decades in this dataset. And another approach to collapsing time is just to use a different representation for different granularities of time. So this is a timeline that Catholic missionaries were using in the mid 19th century and they were using this to teach Native Americans about the history of Christianity. And they were indicating individual years along the central axis as dots and centuries here as these horizontal lines just to show different granularities of time because understandably they had to show a lot of data here. This is a very large graphic, it was a big tapestry. And they're using this approach to abridge the time between biblical creation and Christ and the founding of Christianity and the 19th century. So calendars also encode granularities at different, using different representations. Using a nested structure of days as cells, roses as weeks and months as these polygon shapes. And like radial representations, calendars are good at showing repeating patterns and deviations from these patterns, particularly when these patterns correspond to culturally redic bond conventions of weekdays and weekends, months and quarters. So in a way, calendars like a bookshelf where each shelf you might have a week with seven books on it. But this shelf calendar metaphor, it works really well also for larger granularities of time, like decades or centuries and millennia. And this is the one instantiation of this shelf metaphor. This is Elizabeth Peabody's Polish American system of chronology, it was from the mid 19th century. And she was using this as a teaching aid to learn about history. And she was using this 10 by 10 grid depicting a whole century. Each decade is a row here and each cell is a year. And then the cell was colored in according to what type of event and what category of event occurred in that particular year. And if you're interested in this particular example, I do suggest checking out a revival, an interactive revival of this teaching method by Lauren Klein and her colleagues at the Digital Humanities Lab at Georgia Tech, shape of history.net. Now the last representation I wanna talk about is much less restrained by any particular shape. So what you're seeing here are these very playful curve timelines and these were drawn by Mark Twain over a century ago and he published an article in Harper's Memphis Magazine about using these shapes as a way to remember dates. So I was wondering maybe if I use this approach I can finally remember the succession of Canadian prime ministers, which as a Canadian is something I should know, if they resemble a shape that kinda looks like a maple leaf. Maybe. So I just took you in a brief but certainly incomplete tour of different spatial metaphors for time. And along the way I showed several different examples of timelines but I'm gonna move on now to talk about other aspects of this timeline design space. You also need to consider what a timeline is for and how different combinations of visual representation of visual metaphor and different time scales tell different stories. So what is a timeline for? So one way to go about answering this question is just to try to distinguish it from other types of charts that answer different questions involving time-oriented data. So I would say my simple answer to what's a timeline for is it communicates what happened when. But meanwhile if you have other chart types you have linear area charts or kinda scatter plots they tell you how much over time. Trajectory map or a flow map will tell you aspects of where, what, and when. You have dynamic graphs, family trees, the storyline charts that were made popular by XKCD a few years ago that tell you how entities are related over time. Finally you have this question of what if and that's flow charts and branching. So of course there's a lot of instances out there where you'll be combining a timeline with some other chart type or you might be developing a custom chart type that combines these questions in some novel way. I think of Menard's map of Napoleon's march as one example of that. But if we focus on this deceptively simple question of what happened when and try to take it apart we arrive at some more questions. Like in what sequence do these events occur? For how long did these events occur? And if you take any two events event A, event B, did they co-occur? How did they overlap? What was the nature of that overlap? And when did they occur according to some common baseline event? Like event C here. So as an example to take parts in these questions let's look at these timelines that were drawn by Accurat a few years ago and these depict the lives of notable 20th century painters. And here you have every lifespan of these painters, all their individual artistic periods where they traveled, their romantic conquests, all that. And that's shown along this common chronological timeline. So here I'm gonna redraw part of this timeline, remix it a bit. Here I have Salvador Dali's biography based on that original Accurat graphic and you can see his artistic periods which are shown in brown here like realism and data and some of his travel to places like Paris. And now here is Matisse shown alongside him and I'm using a common chronological scale so I'm gonna shift over Dali so I can accommodate his earlier birth and you can see their respective cubist and abstract periods and perhaps when they might have influenced one another. But now when I change the scale to one that's relative to their birth dates you can now more easily compare the age at which they started their art careers, how long they lived and point out some similarities like they both traveled to Paris when they were in their 30s. And finally I can filter this data and remove everything else and I can remove all the chronological duration of all these events and just focus on one type of event, their artistic periods and then retaining just that sequential order of all the different periods they went through. And this allows me to compare the variety of styles in their careers. So ultimately each of these transformations that this went through they resulted in a very different visual timeline and it tells a different story each time. So there's just a recap now there's several design choices that go into telling stories of timelines. There's a course representation, there's different scales like using an absolute chronological scale, you could use log time scales, sequential scales. Now a third consideration that I'll refer to as layout is just how you lay these things out on a page or on a printed screen. You can facet these timelines into multiple timelines like I did between Dalí and Matisse or you can wrap them into meaningful segments like by century or decade. Now in case you're worried about the huge combinatorial space of these design choices, don't worry. My colleagues and I have written a journal paper about this timeline design space. We based this on a survey of over 250 timelines and timeline tools and then we identified 20 good combinations of design choices that correspond to feasible, perceptual tasks, meaningful narrative goals or different intents. So what would you wanna communicate with the timeline? And we also comment on aesthetic trade-offs and comments about the aspect ratios of these timelines given most data sets. So forgive the very dense figure but you can browse both of this survey in all of these galleries of examples of these timelines at timelinesrevisited.github.io. So now that we're equipped with these design choices, I'm arriving now at the question of how do you tell stories with these different points in the timeline design space? How can you tell, combine different, different interactive elements, animation, annotation. Tell these stories incrementally to reveal parts of a narrative piece by piece. You make different types of comparisons. And you've already seen this a little bit in my little example of comparing Dalit to Matisse. At the one end of this storytelling spectrum, you can present an interactive, I would say a choose your own adventure timeline. There's quite a few tools out there that allow you to do just this. This is just one example, it's called Time Glider. So these are some open-ended, I would call them more exploratory tools and that I would say that they don't guarantee that if you have a story that they aren't necessarily communicated to the viewer. They're certainly fine for open-ended data exploration by clicking on these events and finding out what they're about. There's certainly a lot of data analysis tools out there that do just this, especially in the domain of electronic health records where you're doing an open-ended analysis task. But if you have a story, if you have a narrative, these choose your own adventure tools don't really guide the attention of the viewer along a narrative. At the other end of the storytelling spectrum, there's a tool and a style about revealing a timeline as a slideshow, one event at a time and I left to right chronological order in which the events occurred. This is the approach taken by this tool which is Timeline.js from the Northwestern University Night Lab. But there must be some middle ground between open-ended exploration and one event at a time in chronological order. There must be some more flexible options out there. And if we consider how stories unfold in written language, they don't always stick to a strict linear chronological ordering of events. I could have walked through Dali's life story one event at a time, but the way I did it was I focused on his artistic periods, then I compared him to Matisse and then I showed some commonalities in their past. So it wasn't a strictly chronological unfolding of those events. And this characteristic of written stories, it can be seen when I extract temporal references to events in a written text. So I'm gonna show this tool called Timeline Curator. This is an open-source tool developed by Johanna Fulda while we're both members of the Infobis Group at the University of British Columbia. So this tool, it creates a linear chronological timeline after you load in some text. It uses natural language to extract references to events in a document. In this case, it's a document with the history of pop music in Iceland. And in this interface, it becomes possible to simultaneously highlight within the text an event that occurs as well as on the chronological timeline that you see above. And here it becomes possible now to show that the event in which it appears in the written story can differ from when it appears chronologically on the timeline. And this characteristic is not unique to this story about pop music in Iceland. It's true of a lot of written stories. They don't always unfold with the earliest event at the start. So if we are to tell compelling stories with timelines, our tools need to be more flexible and expressive. For some stories, a chronological introduction of this happened, then that happened, certainly makes sense. But for other types of stories, like in my example of comparing the life of Deletion Matisse, it may not make as much sense. And similarly, if we bring in what I talked about at the beginning of this talk, all the possible ways we visually represent time and scale time, our storytelling tools shouldn't be constrained to linear representations and chronological time scales. And this goal of expressive storytelling, it's why we built a tool called Timeline Storyteller. And this is an open-source presentation tool that my colleagues and I released a few months ago. And I've already used this tool in this talk to show several of the examples. So this is a scene-based presentation tool, runs the web browser. Each scene is, in the story, the author can choose to hide or reveal or emphasize or annotate parts of their timeline and choose a new representation or timescale to better suit that narrative intent. So let's look at a little bit of how it works. When I open up Timeline Storyteller, I have a load dialog, I can load in tabular data, JSON, CSV data, Google Sheet data. In this example, I'll just recreate that Deli versus Matisse story I showed earlier. So in each row in this dataset describes an individual event, I'm faceting it by painter, so I have a painter column or the name of the painter. I have categorical data, I have a start date and end date, some of the end date is optional and some descriptions for the events that will surface as text annotations. Now, when I load this data, I first get a summary of what's in the data, it's chronological range, the categories of events, different facets, and then when it's initially drawn, I get a single linear chronological timeline. It's not faceted yet by painter, so I choose a faceted layout. And next, I want to filter, just to show Deli and Matisse, I don't want all the other painters, so I use this filtering control to hide the ones they don't want. And then I can click on these events to annotate them and I can position these annotations wherever I want and when I'm satisfied, I can record this scene that I'm building as a scene that appears down in my little scene tray down here and that's retained for the first scene in my story. Next, I can then change the scale as I did before to one that's relative to the beginning of the first event in their facets. This is according to their birth and I can repeat that process again. This allows me now to compare Deli and Matisse according to their birth. I can annotate again and I can record this as yet another scene in my story that gets added on. And then I can change the representation using this interface too. I can annotate, I can change it for a radio representation and I can also bring in other forms of annotation. I've used text annotation already but I can also bring in images. I can put in Deli into his, respect to his timeline here, same with Matisse. And then when I'm satisfied with my new scene, I can save this as a scene in my story but I can also export this at any time. I can export this as ping images, as SVG images. I can export the whole story as a sequence as an animated gift sequence or I can toggle a presentation mode just to present this in a live presentation like I would be now. So I just want to finish by telling a bit more of a complete story with timeline story to learn it's a remix of a few existing projects that appeared a few years ago. So this was motivated by two timeline graphics. They were in turn inspired by the book Mason Currie's Daily Rituals, How Artists Work. So on the left, what you see here is a set of minimal, near chronological timelines depicting 24 hours in the day of a famous creative person. And the mouse over here, it reveals what particular activities someone was performing at that time of day. And on the right, you have a much more heavily annotated group of static radial timelines by R.J. Andrews of InfoWeTrust. Now, Podia's design on the left is perhaps better suited for comparing co-occurring activities, synchronicities across the day, what someone was doing at the same time. And Andrew's design on the right is probably better suited for telling individual stories and for emphasizing this notion of a repeating routine. Something that happens over and over again. So what I want to do now is tell a story that combines aspects of both of these existing examples, but also highlights some additional interesting aspects of this data. So let's begin by considering the daily routine of French writer Victor Hugo. And his routine, well, he devoted a lot of time in the morning and the evening to periods of creative work in his day. So he would write several hours in the morning, resume again in the evening.  So how typical is his routine? One might wonder, are all creative people this eccentric and different? So let's bring in someone else to compare him to. So I bring in fellow writer Franz Kafka here, who very, very different from Hugo, seemed to struggle to sleep at night. He had a day job at an insurance company and he would catch up on sleep in the late afternoon. So is it the case that all creative people in this data set or in the book that it was based on have a very individual and different routine? To do that, let's bring in some more people in this data set. So I have 25 people in this example now. But looking at all at once and scrolling like this could be a bit overwhelming. Where are the patterns if there are any? So we need to direct our attention a little bit. So I'll direct the attention just to the periods of creative work during the day. We have some people that work in very short bursts like Immanuel Kant and Charles Darwin. And we have people that work in very long durations like Murakami or Voltaire. We can make another type of comparison. Direct your attention again to types of sleep patterns of these people. Is there a relationship between sleep and creative working? We have some people that are nappers, but most people tend to sleep at night. We have some unusual exceptions. We have already saw Kafka. Balzac goes to sleep at six o'clock apparently and Voltaire only sleeps for four hours. Now another question we might ask, it doesn't pertain to something that has a chronological duration but it's about variety in a routine. So to do this, to answer this question how varied are these routines? Let's remove the aspect of chronological duration altogether and just retain the sequence of the events in this data. And this allows us to see how many unique activities appeared in a day. And using a linear representation as opposed to a radial one, it allows us to compare these sequence lengths more accurately from a perceptual standpoint. And immediately we see that someone like Charles Darwin had the most varied day relative to someone like Murakami. And finally we can restore that chronological duration aspect and effectively reproduce that podiographic I showed earlier. And finally this allows us to spot these synchronicities between events and people just by scanning vertically and seeing when are people sleeping, when are people doing creative work or having meals. And at this point I'd close the story by asking the viewer, well how does your daily routine compare to these people here? What story does your timeline tell? So I just wanna finish by reiterating that despite the apparent simplicity of the question of what happened when, I've hopefully communicated this richness of a design space here. In terms of different visual representations for time, different time scales you can use. This design space, it grows even richer when we introduce dynamic storytelling elements like the incremental reveal, reflective annotation, highlighting and animated transitions between points in this design space. So the projects I spoke about today they wouldn't have been possible without the help of my colleagues at Microsoft Research and the University of British Columbia. Once again all of the research that went into informing these design choices that I made in Timeline Storyteller, it's available at timelinesrevisited.gethub.io. And if you're interested in the tool that I showed briefly about scraping text documents for events and creating timelines that way, that's at timelinecurator.org. And now you can go to timelinestoryteller.com right now and create your own timeline stories except JSON, CSV data. And as researchers at Microsoft, we're interested in studying what stories you build using this tool or using these techniques as well as collaborating with you to create some stories together. And finally I'll just close by saying if you're interested in joining a discussion about this type of data, about open challenges with timelines and standards for timelines data.  This is sponsored by the Sloan Foundation and it's together with colleagues at HarvardX. So with that, thank you very much for having me and I look forward to seeing what stories you create and chatting over lunch. Thanks.


Good morning everyone. Yesterday, I shared with you that my wife Sophie was being tested for COVID-19 and that test did come back positive. Sophie's symptoms remain mild, but we are following medical advice and taking every precaution. She will remain in isolation for the time being. We are thinking about all the families across the country who've received the same diagnosis. But we're in good hands. We have full confidence in Canada's health officials and professionals. This means that upon my doctor's recommendation, I will remain in self-isolation for 14 days. I want to be clear, I have no symptoms and I'm feeling good. And technology allows me to work from home. Of course it's an inconvenience and somewhat frustrating. We are all social beings after all. But we have to do this because we have to protect our neighbours and our friends, especially our more vulnerable seniors and people with pre-existing conditions. We are following medical advice, as should all Canadians. And on that note, I want to thank all of Canada's health professionals and the public health agency who are doing an incredible job supporting and looking after all of us. Yesterday, I informed you that my wife Sophie had suffered a test for COVID-19 and the test was positive. Sophie's symptoms remain low, but we follow medical advice and we take all the necessary precautions. She will remain in quarantine for a short time. We are thinking about all the families across the country who've received the same diagnosis. But we are between good hands. We fully trust the health professionals and the authorities of Canada's public health. That means that following my medical advice, I'm in isolation for 14 days. I want to be clear, I have no symptoms. I'm feeling very good. I work from home, by precaution. Of our days, technology allows us to work remotely. Of course, it's not ideal and it's a bit frustrating. We are all social beings after all. But that's what we have to do to protect our neighbours and friends, especially the elderly, the most vulnerable, and those who suffer from health conditions. We follow the lives of doctors as all Canadians should do at the moment. I want to thank all of Canada's health professionals and the Public Health Agency, who do an exemplary job to support us. I will now take you through the steps that Canada takes to ensure your safety and protect your health. Yesterday, I met with several international leaders, including President Trump of the United States, Prime Minister Johnson of the United Kingdom, and Prime Minister Conte of Italy. I participated in the meeting of the Special Committee of the Cabinet on COVID-19, and I held a telephone meeting with the Minister of Finance on the current economic situation. I also had the chance to make the point with the President and Director of the Canada Trade Chamber and the President of the Canada Work Council. This morning, I participated in a meeting of the Cabinet, and I spoke to President Macron of France. I will continue this conversation in the coming days. Earlier today, Minister Blair, Haidu and Garno announced that Canada would recommend to Canadians to avoid non-essential travel abroad. We also announced that the cross-country season was suspended until July, and that we will further enhance the safety measures in airports. We will also rationalise the arrival of other countries in order to better control them. Earlier today, Ministers Blair, Haidu and Garno announced that Canada has advised Canadians to curtail non-essential international travel and that the cruise season is suspended until July, and that we are bringing in additional screening measures at airports. We are also streamlining overseas arrivals to be better positioned for screening. Yesterday, we saw many provinces take strong steps to keep people safe. They are doing what needs to be done to protect the public, and I want to thank them for their exemplary work. Later today, I will have a call with the Premiers and Indigenous leaders to discuss the latest developments and coordinate our efforts, including the over-billion-dollar COVID-19 response fund which provides money to the provinces and territories to support preparation and mitigation. These are significant steps, and we will do more. The provinces and territories are facing various levels of risk, but we will make sure that we align our response across the country. Addressing COVID-19 must be a Team Canada effort. To keep Canadians safe, to mitigate the economic impacts of the virus, all levels of government are working together. We are talking regularly. We are coordinating our efforts. We are following the situation very closely, and we're pulling out all the stops. I know that you're worried. You're worried about your health, about your family's health, about your job, your savings, about paying rent, about the kids not being in school. I know that you're concerned about uncertainty in the global economy. The steps being taken to keep you safe have an economic impact. But what is also true is that we are in the enviable position of having significant fiscal firepower available to support you. This is an addition to the measures we've already taken. The finance minister is also in constant communication with his international counterparts to find ways to work together to mitigate the impacts of the virus on the global economy. He will have further announcements shortly this afternoon. The agreement we reached with other parties to suspend the House today also still gives us the flexibility to do the things we need to do in order to support Canadians. No one should have to worry about paying rent, buying groceries, or additional childcare because of COVID-19. We will help Canadians financially. The Government of Canada will be introducing a significant fiscal stimulus package in the days ahead. The Government of Canada will announce important fiscal recovery measures in the coming days. I know that you are many to worry about. Worry about your health and your family's health. We are doing everything we can to protect our economy and we are in an increasingly fiscal position. All government orders work together to stop the spread of the virus. Companies and citizens, like you, take precautions. We have here in Canada services and health professionals who are doing an incredible job. Every order of government is working to stop the spread of the virus. Businesses and citizens are taking precautions. We have outstanding public health authorities who are doing an outstanding job. We will get through this together. Merci tout le monde.


What's going on everyone Sam here with late in sports cards? We are ripping at 22 tops triple threads Baseball hobby 9 box case break number 46 pick your team style gonna read off a list of our names in our teams Got to open that up anyone sec here We've got Alex P. Mariners Andrew M. Reds Edward P at Red Sox Cardinals Eric R. Phillies Padres Eric a with the Marlins Francis M. Yankees Greg B. Guardians James P. Dodgers John G with the Astros Jonathan Q with the Nats Thank you for selling us out JQ Lonnie C. Orioles Pirates Mark K. Diamondbacks Matt P. Royals Matthew C. Brewer's Mike a with the Braves Mike S Twins Noel B with the Cubs Peter M. Giants Regina a white Sox Mets Ryan B. Tigers Scott B Blue J Scott F angels Shane W Rockies athletics Rangers Steven J with the Rays Good luck here everybody. Let's get going dude triple threads is always fun, man. You just never know. It's gonna be in there Stop Tim Tim says what's up to you too? What up Tim? Tim K, baby Down to five to go on tiered random team style contenders optic basketball breaking in at two breaks Mattingly to 299 and Say as Azuki to 150 nice one there for the Cubs on the rookie CJ Abrams rookie base and base God Joey Bart on the second year 57 out of 75 at Jersey auto Leighton sports cards comm Jack Lincoln bio Joey Vado for the inks 13 out of 48 Congrats Yankees Did I say Joey Vado? I said I met Joey Gallo. Come on. I said Joey Vado.  We got 30 out of 50 going to the Diamondbacks. That's Alec Thomas Nice one there basically I'm looking at like five things at once Chat the camera take talk Yeah, we did we did smack. I don't know if we still have any in stock I know there were some personals of it that was ripped Of decadence, but apparently it was really good from what I heard Ready, nobody say anything in chat. I should throw this pad at Sean up.  Thank you guys for that That close to full Carlos Correa to 299 he's gonna be a twin again, which is wild and Miguel Cabrera to 150 Can't believe that dude. What a mess classic Mets botch There's flavor Taurus 18 of 18 racing home for the inks Nicoledolo 3 out of 99 for the Reds rookie Otto nice one there Reds They just they like signed them and then he they didn't like what they saw in the physicals. They're like nope Not gonna happen. They agree. It's one of those things. They agree Yeah The botch by both teams Then he signed it either like a huge discount now for the twins signed for six years like 200 million Yeah, same. They're like, oh he didn't get the 13 years He wanted but like y'all so is getting 33 million a year So he's gonna be just fine Mike Schmidt to 199 Vlad II senior to 99 Hunter Green rookie say Dale Murphy 18 out of 27. That's going to the Braves outfield assists nice one for the Braves and Redet murders Eat 10 of 18 to the Angels I think it was more than that Kyle because I know his annual salary is 33.3 I think it was six for a hundred 200 to hundo Hunter green to 25 going to the Reds nice one there Grats reds and Alex Pregman a 259 strew base base and base There's Buster Posey 34 out of 36 for the Giants Grats of Giants I'm out Castle 23 out of 99 going to the Orioles Grats on that Lonnie. This is baseball. So no Steelers Boy After this we got optic retail 20 20 21 for our basketball than a full case of Contenders optic basketball tiered as well There's Jackie Robinson to 150 One of one Salvador Perez on the Ruby. There you go Royals go to Matt P. Congrats, Matt Nice one there, buddy. One of one Salvi and get that mag for you. It's going to Shane We got Corey Seager, Marcus Simeon, Adolis Garcia, Ryan, they're done Personals get started right after group breaks are over. So usually about 12 a.m. Eastern time Like that's probably when it'll go tonight. Maybe a little bit after and Joe Ryan 67 out of 99 for the twins by Amazon Probably is there somebody there at a 125 Orange Reggie Jackson the one 99 O'Neill Cruz rookie Tray Turner Shane buzz. Yeah, just super chat us like three grand and we got you Kyle come on Jackson co-art 89 out of 99 with the Royals and Will Smith to 27 Hey, what up present appreciate your buddy. Appreciate that appreciate it Amazon. Yeah, I'm on You Got to pass Am I putting the TV on after this?  How about a triple? Raffi Devers and her bow guards JD Martinez 27 out of 27 One third of this card is Nice one there congrats red socks, that's pretty cool on Moncada For the white socks to 36. Yeah, I know don't want Von seen it enough honestly We may use to 259 Jared Kalamick to 99 base base base Peter Lonzo to of nine going to the Mets three color two color one color nice one there 30 at May RBI But there's good basketball on tonight apparently it's TM NBN TNT So there's seven o'clock game or an eight o'clock game and then a 1030 game, which is good Corbin burns 20 of 25 for the brook Yeah, when we had like no snacks left We have these crackers and I was putting Kyle's hot sauce on the crack in between breaks It was real Struggle I'm putting hot sauce That'll be happening Top though Spencer Torcal sitting 125 mark with wire at a 199 Redemption behind this that's gonna be Trevor Jones Freddie Freeman or Ronald Acuna going to the Braves nice one there two of 18 I Did so good and Triple threads autograph single jumbo relic amethyst parallel Mike is Shremski going to the Giants nice one there Giants I love the ghost pepper one man. I like the Habanero Habanero. It's fire. It's really tasty Mike Schmidt to 150 Onyx Albert Poulos 27 of 50 Going to the twins future phenoms autograph really card gold parallel Alex Kirolov nice one there congrats Swins on the redemption Got Wilson Contreras. They're all good, dude nine of 18 blue agave sriracha. That just sounds good, dude I gotta try that All right five to go still over on Contenders optics 20 box full case break tiered random theme stop that is where you can get your sweet shot You hear that that's where you get them out of though That's fine when they I could be the only one who wants to hear it. I'll still do it No, you probably shouldn't oh I will Should it but I will should but short The office reference Why me probably should but short Base That's what here is gonna go to the Yankees clever Torres six of 18 power in the middle a couple of patches Two color one color two color a little bit of white in that bottom right? nice one there yanks and Redepners 32 out of 48 for the angels Garrett Cole to 199 and Freddie Freeman to 99. That's cool Going to the white socks 10 of 18. We got to touch them all relic Jose up right you Tim Anderson Lou Bob. That's game use bases. Congrats white socks Regina a Touch them all relic Congrats there Regina, and then we've got nationals legend 14 out of 50 Nelson Cruz Congrats JQ picking up the Nelson Cruz Lou Bob to 125 orange Ernie banks to 199. That's both Chicago teams That's Nice one here going to the Yankees how about 13 out of 27 Yogi bearer Game use memorabilia That's awesome. Congrats Francis M on the Yogi Nice one there, buddy That's so sick That's really awesome to go into the Cardinals 39 of 50 Paul the young not nasty that Yogi Yeah, Yankees all the way. Yes, sir tipo got an extra hit in this one I believe John Carlos Stanton 125 satchel page to 199 base and base First up we've got Seven of nine Hingian Ryu going to the Blue Jays nice one there Toronto. I think it's a good signing for the twins Alex Kierloch 17 of 36 going to the twins the Austin Meadows five of 48 going to the Tigers Congrats on that Tigers last box of the break. Good luck everybody President PC Hingian Ryu why Why are you surprised about that? I like Hingian Ryu, which he was on the Blue Jays That could be more of a fan of his That's not like a Sam PC to you. If you go on contenders optic I think not a lot too stanky Vladdie jr. The 259 Frank Thomas the 299 I'm from Connecticut to each era Peter Lanzo George Brett Corey seager 27 out of 36 for the Rangers and Dylan seats to 75 Yeah, until this last pack right here Shane And there's a Belcher a one-of-one There's a blue. That's kind of nasty. I'll be a good patch Eloi to 99 and mella to 299 Milford nice. Yeah, awesome Berlin There's Bryson stop Base and base you know Shane. This is pretty cool. That's nine of 27 Larry Walker for the Rockies Not quite a one-of-one, but I believe you have the Rockies right Shane all right about that Yeah, Shane with the Rockies there you go Shane nice one there buddy Anthony Rizzo to three to a quick recap right here Yeah, Corey seager Rangers Alex Kearlaw twins awesome Meadows Tigers Anthony Rizzo Yankees. Yeah, sorry about that Smurf Yogi Berra Yanks Triple of the White Sox Reed Dettmer's Angels Wilson Contreras Cubs That is triple Braves Peter Lanzo Mets you on Moncada White Sox Will Smith Dodgers Shipple for the Rangers Buster Posey Giants Reed Dettmer's for the Angels Labor Torah is going to the Yanks right now the Tati's Padres Cody Bellinger Dodgers Joey Gallo Yankees Yeah, appreciate that Jason Jason. Sorry took a spot too. Thank you, man Larry Walker for the Rockies Dylan Cease White Sox. That is Hinchin Ryu for the Blue Jays God Paul DeYoung for the Cardinals Nelson Cruz Nationals Labor Torah's Yanks Alex Kearlaw twins Mikey Shremski Giants Corbin Burns for the Brewers Shipple for the Red Sox Jackson Co are going to the Royals Joe Ryan twins Brian Mountcastle Orioles Dale Murphy Braves Nicoladolo Reds to Brian Hayes for the Padres Pirates Alec Thomas Diamondbacks Joey Bart for the Giants and One of one is Salvador Perez I'll do it for the break guys. Thanks again for the fill next up. We've got Optic


So, now what we saw in the previous lecture we saw wetted residual approach and then one example of that approach is collocation method. Second popular approach is what is known as Galerkin method and so it is one of the wetted residual approaches. So, in this case the weight is chosen as the shape function. Now we are into the finite element procedure when we saw point collocation that time we were in whole domain approximation. So, that I explained from the point of a whole domain. But here when I am explaining Galerkin method we are into finite element proper finite element discretization procedure. So, that is why we have divided the whole domain into number of elements and there are number of nodes for each node there will be corresponding shape function ni, is it not. And for each we will write wetted residual statement for each node we will see how to do that and then there are this shape function ni will come. Now what is the advantage of using weight function as shape function because it leads to the same linear system of equations as in variation formula. That will prove now. That is the reason that you know this became very popular and you know that is why Galerkin method and this variational approach, Rayleigh's method they can be proved to be equivalent. Now how that is done and how it is achieved we will see. So, again let us take two dimensional Poisson's equation and the residue is this is it not. So, this is nothing but del square phi is equal to minus h and then this when moment I say residue that means this is actually phi tilde that means you are substituted in this some approximate solution assume and that is why you will get residue at every point. So, for simplicity I have dropped this tilde notation on phi. So, now what we will do we will write wetted residual statement or expression for each element. So, what is the you know wetted residual expression integral wr d omega or ds. So, now we are in this approach weight is substituted by corresponding shape function at that node because see now I goes from 1 to 3. So, that is why this statement will be there for each node of considered element. So, there will be three wetted residual expressions and corresponding three wetted residual statements integral w into residue is equal to 0 integral. So, we are minimizing residue in wetted integral sense now this is the residue this is the residue is it not. We are minimizing the residue in integral sense where in this weight is shape function wetted residual statement for ith node of element is. So, there will be three statements for every node every element in case of triangular element. If we are using a quadrilateral element with four nodes there will be four you know wetted residual statements like this and the corresponding this shape function would be different for the rectangular or quadrilateral element right ok. Now, going further now we will like I think we did previously this these two terms we will you know express is that express as minus this minus the derivative of this product minus it is basically we are doing this d by dz of pq is pdq by dz plus qdq by dz it is simply that ok. So, this term is whole you know group of these two term is basically return as this minus by using this simple 10 rule of differentiation ok. So, now so you have now three terms here this is Roman 1 Roman 2 and this is the source term. So, the wetted residual statement earlier there were only so there was a source term and this term was there this got split into two and is one. So, there are total now three terms 1 2 and 3. Now, let us take this first integral which I have rewritten here as we did earlier we apply first you know we use divergence definition at exactly same procedure we followed in one of the earlier cases. We substitute this by using divergence definition this bracketed term is nothing but divergence of this is it not right divergence of this is this and then now we invoke divergence theorem and then this surface integral becomes contour integral ok. So, this T is a tau is a is a closed contour and closing the element formed by the edges of the element. Now, this integral 1 this we will see little later first we will concentrate now on this second integral integral 1 which we simplified we will see it later. So, now let us see the second integral the second integral is this ok and then we substitute phi as summation nj e phi j e n 1 phi 1 plus n 2 phi 2 plus n 3 phi 3 as phi is it not. So, that when you substitute in place of phi you will get this expression where now this only daba by daba x and daba by daba y they operate only on n nj because phi j is not function of x y in this very in this when we minimize it is not function is it not we are just varying the potential at a point same thing that we have seen earlier ok. So, that is why this phi j is coming out and then you get this and now this can be written as del ni dot del nj now compare this with the corresponding variational formulation expression that we had got at the element level. So, when we actually had found in element level energy we had got this right if you refer the previous slides you will easily recollect we had got this right and then we actually but here what is the difference you see here we have phi i and phi j. So, two potential variables are there here there is only one potential variable why it is so because remember this in variational formulation finally this was basically part of energy elemental energy you will combine energies of all elements and then with respect to each phi i you will differentiate the total energy expression and equate it to 0. So, one of this phi i or phi j whatever phi i say phi i will get eliminated because when you differentiate that total energy say capital F by phi 1 this phi i will go is it not. So, then this and then half here there is another difference there is no half here because the same thing that you know you when you have phi when you differentiate with respect to the diagonal terms will be phi i square is it not. So, when you actually differentiate that 2 and this 2 will get cancelled when it is half diagonal term half diagonal term because of symmetry they will come twice phi 1, phi 2, phi 2, phi 1 is it not. So, again that 2 will get cancelled with this half. So, that is why this and this they are equivalent after energy minimization this both will become equivalent and what is this you know this term this is going to give you the global coefficient matrix finally your equation is your equation is Ca is equal to b is it not. So, this both this will give you capital C matrix this also after minimization will lead to capital C matrix. So, you can just refer this earlier that our formulation you will understand that is finally led to the global coefficient matrix C in the system of equation Ca is equal to b right here A is nothing but phi, C is the global coefficient matrix n by l is it clear. So, now we have already seen the equivalence between Galerkin method and this variation variation method which is Galerkin's. So, now the residual function can be converted into a matrix form like this. So, this is what I was saying this C capital C E will directly come from this is it not. Now, here there if you see there were 2 summations you remember that element coefficient matrix there were 2 summations here i goes from 1 to 3 j goes from 1 to 3 and then we said that you know that is 3 by 3 matrix, but here there are only 3 terms there are only 3 terms here other 6 terms will come when you write corresponding residual statement for the other 2 nodes. So, this C E capital C E will again be 3 by 3 at the element level I will again repeat suppose you know we are suppose there is some element E and nodes 1 to 3. So, this will be for node 1 this statement you will get 3 terms when you execute the same procedure for second node and third node of that element you will get another 3 and 3 terms. So, totally you will again get 9 terms right. So, again it will lead to a 3 by 3 matrix at the element level in this weighted residual procedure is it clear. So, now we understood this now there are 2 more this matrices here this B j will directly come from this and this we have seen earlier this will directly give you that B j. Now, here this is the additional term here B capital B small b this B stands for boundary right. Now, this B capital B small b E is basically is coming from this integral 1. So, now see here going back in the weighted residual statement we started with this for node I only node I of one element we started with this weighted residual statement then we got this 3 terms this we understood this will lead to B j the source term source matrix at the element level corresponding to the whatever source you have that we have already seen. This second this term we have seen that leads to the global coefficient matrix capital C right. Now, what remains is this right. So, this first integral Roman I we already converted it to this ok. Now, this is corresponding to is Roman I now we will see what happens to that. So, we are now considering the integral I. So, now this you know we are discussing elements of this capital B small b matrix at the element level. Now, consider a phi node example these are phi global node numbers and there are three elements right. So, now if we write for node 2 remember here in weighted residual we are operating at nodal level for every node we are writing right. So, for node 2 that integral I this expression for node 2 then here it will be N2 is it not. So, in element 1 now this node 2 is you know common and we are considering this H24 we are considering what happens here because finally what we are doing we have gone from you know from the surface integration to contour integration. We are going from area integration to contour integration. So, now we are actually seeing what will be the contribution of this integral I along all this segment because any element you take this will be the counter for element 1 this is the counter 1 4 2 is it not. So, I am considering now on H24 what is happening H24 which is common to these elements 1 and 2. So, now in element 1 the corresponding integral rho 11 for node 2 will be this is that expression right. So, it will be N2 for that element d phi by dx, daba phi by daba x and similarly this right. So, it will be for element number 1 it will be N2 of 1 remember shape functions for a node will have different expressions in the adjacent element is it not. So, N2 of 1 N2 in element number 1 will be different than N2 of element number 2 N2 in element number 2 is it not, but N2 of 1 at node 2 will be same as N2 of element 2 at node 2, but in general at other points it will be different except on H24. Are we getting N2 of shape function of node 2 in element 1 at a found at node 2 itself will be same as corresponding N2 2 in element 2 evaluated at node 2 it has to be mathematically it should be consistent right. So, now in element 1 you get that this expression into AN hat d tau in element 2 it will be N2 2 and AN AN hat 2. Now, we have now something interesting happens now you take this segment N2 4 right. Now N2 of 1 and N2 of 2 on this segment is same because to get the same potential is it not and how you can do that you know the expression of N2 the standard expression that we have been seeing right that expression you have x and y there is it not that x and y you know the equation of this segment any line you can represent it as y equal to mx plus c right. So, you know the N coordinates of this 2 and 4 you know. So, you can express this segment equation as y equal to mx plus c if you that you substitute in N2 of element 1 expression N2 of element 2 expression then you will find that you can prove this yeah. So, here this N1 is there is it not N1 is this now for example, you see this is N1 for element number 1 and N1 for element number 2 will be different is it not because this x3 y3 all those coordinates will be different because there are different corresponding node numbers is it not and these coordinates will be different I hope you are getting it yeah. So, N2 for example, this N2 is there. So, N2 here will be different for one element and second element because this coordinates themselves are different in different elements is it not but actually in the same expression of N2 here for the two different elements if you put the equation of line that is y if you put y equal to mx plus c and substitute y in terms of x for example, you will find that N2 expressions for both the elements will reduce the same on that common segment 2, 4 you can verify this okay in very simple matter of you take any two you know one common segment with some coordinates and you can quickly verify this then if that being the case then this whole square bracketed term become equal on segment 2, 4 on segment 2, 4 is bracketed term square bracketed term become equal because this is equal to this, this is equal to this and what happens to this AN, AN hat they are exactly opposite see this is AN, AN2 because this is the outward normal we have seen earlier is it not this is the outward normal for element 2 for this edge this blue one AN hat this is the outward normal for element 1 and for the corresponding segment 2, 4 this will be the outward normal is it not so this outward normals on this segment for the two elements are exactly opposite so this will be exactly they will cancel each other. So effectively what we have you know sort of seen that this contribution of all these inside segments to this integral 1 Roman integral 1 will be 0 all these you know inside segments which are common to any two elements the contribution to the Roman 1 integral is 0 so the contribution to the Roman 1 integral will be only for the from the sides of elements on the outermost boundary. And that means when you have this you know Roman 1 integral evaluated for the entire geometry when you combine all the elements together only the contributions of the outermost boundary segment will remain is it not is this clear and now so same thing is summarized here in this two statement read it carefully integral that Roman integral 1 while combining those you know individual level matrices the contribution from the two contiguous element will become 0 over the corresponding common edge we saw just now right. So over the outer boundary of the domain this will result into a Neumann boundary condition why Neumann because this is d daba 5 by daba x and daba 5 by daba y the Neumann condition right and depending upon you know suppose if we take that parallel plate capacitor ks then you know we have seen earlier that this a and hat will be either in x direction or a y direction is it not if you take a parallel plate capacitor vertical boundaries for example the unit normal will be in the x direction. So then one of these two terms will be 0 because the dot product with for you know if it is vertical boundary then a n will be a x hat and a x hat dot a y hat will be 0. So there will be only one contribution and then only whatever is the if there is a Neumann boundary condition daba 5 by daba x that will get imposed right. If it is homogenous Neumann condition then it will go to 0 depends on what is the boundary condition on that right. So if it is homogenous Neumann condition as in case of that parallel plate capacitor problem with fringing effect neglected then these there will not be any contribution from this is it not because it is all homogenous Neumann condition these all these derivatives will become 0 anyway where that is applicable. One term will go down to 0 because a n is in particular direction the other term will go down to 0 if it is homogenous Neumann condition is it not okay and if suppose you have on the outermost boundary you have a diraculate boundary condition that means stop and bottom plates of that capacitor if it is a diraculate boundary condition that will get imposed when you actually in the final set of equation when you impose the boundary condition there will have to impose that boundary condition as we have done earlier is it not the diraculate boundary condition will get imposed at that at that you know stage right. In case of non homogenous boundary condition these terms will be non 0 and then this matrix will be there if it is homogenous Neumann condition this will go down to 0. So, if homogenous it is equal to 0 that is the meaning of this and then it is called as natural or implicit boundary condition in FEM why implicit that time we discussed even if you do not impose it it will get if you do not impose it will be automatically be taken as homogenous Neumann because those terms will not be there in your final set of equations is it not. So, that is why it is called as implicit you do not have to if is homogenous Neumann you do not have to impose moment you do not consider those matrix term automatically you know they are they are made to 0 clear and if diraculate condition it has to be imposed when you get final that matrix CA equal to B right. So, your final matrix equation is say CA is equal to B right here A is what phi in our case because we are taking phi as the variable. Now this B has two contribution from B j if it is a magneto static right. So, current density say and then there is a B boundary. So, this B j will come and you know that will come from that from this term capital B small b e is controlled by this integral. So, this B e finally, this B capital B small b this matrix will come from the segments which are on the outermost boundary right when you evaluate that integral Roman 1 right and C anyway is the global coefficient matrix which is same in both variational and so finally, this CA equal to B will be same this matrix equation will be same in both cases variational as well as wetted residual right. So, with this you know we have understood both variational and wetted residual methods right wetted residual approach is more of a mathematical because here you can see we have not talked of energy. We only talked of minimizing the residue or the error in wetted integral sense we did not talk about the energy. So, it is purely a mathematical technique of minimizing the error or the residue at each point. So, we will stop at this and then we will see now mostly the applications and the corresponding changes in the PDEs and you know formulation. Now, every time we see new formulation like axisymmetric diffusion equation transient we will see only the governing equation and the corresponding changes that will happen in our formulation, but we will not get into coding because that coding part is more or less now over we have explained 2, 3 codes to you. So, using that you can develop code for any two dimensional formulation. As I said 3D formulation is difficult from the point of your coding unless it is absolutely necessary you should not go for 3D coding to start with first you should do 2D coding, verify 2D results then only you can go for 3 dimensional coding ok. Thank you.


What's going on YouTube? Lee Brandt here with OctaDeveloper. Today we're going to talk about default implementations in C-Sharp. Why I hated them, what I heard about them, but now that I've played with them a little bit, kind of love them. Let's check it out. Now, Microsoft introduced default interface methods a while ago with the release of C-Sharp 8. If you're like me, when I first heard about it, the first thing I thought was what do you have against abstract classes? I mean, isn't that what they're for? To provide an implementation at the very base of everything? And the problem comes in and the reason that this is necessary is because C-Sharp doesn't support multiple inheritance. And most languages nowadays do not support multiple inheritance. I think C++ might still. But the reason why is because of the diamond problem. And this is just one of the problems with multiple inheritance. So let's say for instance, I have this D-class. And D derives from both B and C in languages that support multiple inheritance. So both B and C inherit from A. Now A has a method on it called walk. Okay, whatever. C overrides the walk behavior. And then when you call D dot walk, which implementation am I using? Am I using C's implementation of walk? Or B's implementation of walk? Or A's implementation of walk? So what you'll get usually is a compile time error saying unspecified implementation. So basically what you end up having to do is you have to decide at design time whose implementation you're going to use and you have to specify it out to the end's degree. So default interfaces methods don't totally get around this. There's still a bit of a problem there, but it does make it a little bit easier to implement this. But that's really the reason for default interfaces and not just using abstract classes because if you've already got a class that derives from another class, you can't inherit from another class. So you have to add in, and you can have multiple interfaces. So since you can have multiple interfaces and they're already there, that seemed to be the best place to put these interface default methods because then you can actually do something that's known as trade programming and add some traits to classes that already exist. Let's see how that's done. So let's look at what default implementations or default methods and interfaces actually gets us. Why would you go through all this trouble to get it in there? And there's this thing called trade programming and it's a way to add functionality to a class that already exists without kind of modifying the class. It's just a way to extend an existing class and give it new capabilities. So way back when you first started developing the application for your company, it's a young company, you're young baby-faced developers and you only know what you know about the business and about what your needs are going to be. So this, again, is a contrived example but it boils everything down to its essence. Don't focus on the fact that I'm using a file stream that I haven't initialized, just trying to make the code small so the examples come out. So I've got the iLogger here and it's just got one method, log, that takes a string message. Then I've got a file logger class that implements the iLogger interface and it implements that log message, log method by taking the message in and writing it to a file stream. Now this is all fine and dandy until the system grows some and now you need to be able to log things differently. Maybe you always want to log errors to file logger. Maybe you always want to, maybe you want to load, log errors and info and just plain old system messages and warnings and all that stuff and you want to log them differently. You could start by trying to come up with some standards and saying that errors are going to be logged with the square brackets and error and then colon and then whatever the message is. But then people write a piece of code and since strings aren't compile time checked or runtime checked, you have to go and find out why this error is missing a bracket on the end of it or really what's probably happening is you're searching through this big text file and you're not seeing an error that you should be seeing open square bracket, error, closed square bracket, colon to find all the errors in this big text file. So then you have to start backing that off and trying to figure out maybe somebody misspelled error in one. Okay, now you have to try and figure out which class is writing that error, how do I go and fix it and make sure that it's following our standard, blah, blah, blah. There's easier ways to do this. I could go back and add a log error and log warning and log info to iLogger and then I have to go and find all the places that implement iLogger, like the file logger, the database logger, the Mongo NoSQL logger, the Splunk logger, whatever it is, whatever loggers you've created that implement iLogger, you have to go and find all of those and implement log error, log warning, blah, blah, blah. When really all you really wanted to do is log but you just want to log it with a specific format so that it's easier to find in the file log. So what we might do is we might come back and implement those as default implementations in the iLogger interface. So log warning just calls the log method right up here. It just adds warning at the front of it and for log error it just adds error. So now we have this implementation in one place in the iLogger and the file logger still works the same way. Nothing changes in the file logger. It just does log, file stream, write line, message. And what ends up happening is whenever somebody who's using it calls log warning it adds, it calls log with warning at the front of it and the message piped in and this is the implementation that gets used because this has no implementation. So it's not going to use the iLogger's implementation of log. File logger is the one that has that implementation. Database logger is going to have its own implementation where it logs the type of error message in one field and it does a SQL statement to insert that into a record into a table somewhere. And none of that has to change in so that means that when my iLogger gets injected into some controller somewhere file logger is the one that gets injected via my dependency injection container system and so the logger is actually a file logger. So when I call log error, file logger doesn't have a log error method but it kind of does because it implements iLogger and there is an implementation that gets just all the way down here in iLogger. Now you still could have the same problem where you implement iLogger in two different places and you inject both of them in there and you're still going to have some of those same diamond problems. They're going to cause a compile time error saying that it's an ambiguous implementation and you just go in and you say the file logger's log error. But the log error doesn't necessarily have to exist in file logger, you just have to treat it like a file logger and the file logger implements iLogger which has the default implementation if that makes sense. So you haven't gotten rid of all the problems that come with multiple inheritance but you've really simplified it and you've allowed people to add this trait. So you might think at this point okay default methods are cool I can see their use but isn't that a little dirty? I mean it feels a little dirty to me to put implementations in my interface and is this something that I can use as a quick fix but I should actually go back and change my class architecture later to actually be more in line and not use the default implementations. I think both are valid points of view for me. I struggle with both. I think that this is a really good way to do a quick fix. So if you need to add this log warning log error you need to add a method with a default implementation like this I think it's a good way to get that functionality in there without a super heavy code lift and maybe you might decide that yes we need to go back and create a story set aside some time to actually re-architect this piece and it's going to be a little bit time-consuming because we're going to have to go and find all the places that implement iLogger but what if and this is what I keep turning over in my head what if we actually embrace default methods what if we designed our system with that in mind we know things are always going to change and not just from the business side that's the thing that most people think of when they think of change in an organization and change in a piece of software is that the industry changed and some new thing came down the pike from the business and I need to implement that in the software and that's common yes but there's also things that we don't really take into account we know that that change going to happen but there's also other changes that we forget that are going to happen like changes in the language that you use what if in this case C-Sharp 8 has default implementations in it for interfaces to leverage that or what if some feature that we relied on heavily and C-Sharp goes away it's causing problems in too many systems we haven't had a problem with it but C-Sharp is going to deprecate that feature now we need to figure out a way to change that those changes are going to happen the other type of change is going to happen is you're going to learn I mean you're here watching this video so I'm assuming you're learning anyway you're going to learn some new feature like default implementations that you didn't know about you're going to learn about some new way of doing something in the language that already exists it's not a new feature in the language it's just something that you've never used before you didn't even know was there but you talk to some of your programming buddies or you watch a video and you're like oh no you could do that that would be super helpful in here and over here and where we're doing this and this problem that we've been having over here where we've got this super convoluted code we could boil that down to one method class and be done with it so you're going to learn things are going to change so if you decide to use default implementations it's just another lever you can pull that you've got on your code to plan for that change just another thing that you can use that can make change easier and if you want to go back and re-architect the whole solution later for sure I mean that's not a problem at all but this is just a this is something that you can use in the meantime so I hope you've learned something from this I know I learned a lot from as I started digging into it man I need to write about this because I had no idea that these were actually kind of useful so if you found this useful please give me a like and subscribe down below hit the little bell icon if you like this type of content subscribe and hit the notifications icon so you get notified when new content comes out we generally publish new content on Tuesdays and Thursdays so you'll be the first to know when new content comes out if you like the stuff we're doing please let us know if you have a question please post it in the comments below I'll try and answer all the questions that are down there thanks for joining me today and see you next time