Hello, everyone. I'm Sanjay Gupta. I welcome you on Sanjay Gupta Tech School So this is day 10 of cyber security bootcamp, and I have Sumit with me. So welcome Sumit on the channel So Sumit will be explaining further topics today and maybe some hands-on so over to you Sumit and Let's start with a session Welcome again on the cyber security bootcamp day 10. My name is Sumijan and I'm delivering you to the Basics of cyber security how these things works how you can build a carrier in cyber security So if you want to know about me, my name is Sumijan and I'm an ethical hacker and cyber security expert Currently working as a SNAC red team and pentabug red team I'm working also in Jito networks as a position of senior security specialist I have 10 plus years experience in this field Previously I'm working as a guest instructor at the central detective training school and right now I'm helping students freshers and professionals to build their carrier in cyber security domains and various domains related to cyber security So if you want to follow or want to know more about the cyber security or related fields You need to follow the cyber security zone YouTube channel where I'm Creating and delivering some more contents related to the application security and network security as well You can follow Sanjay Gupta Tech School where I'm conducting this cyber security bootcamp Please share a review or feedback about how we are able to deliver some of the things You can connect me to these block platforms as well. I'm available only LinkedIn and Twitter or telegram The important links is also available in video description. So go check that out and raise a hand and Ping me if you want to follow So today we want We work with we learn about how to operate Linux OS So basically when we do things on cyber security, we need a different OS Right now you are using Microsoft based OS, which is called Windows But for security purpose because we need to install some security tools or we need to use some of the scripts written in Python or go language So we need a different operating system and to do the task we use Linux based operating system So land what is Linux? So Linux is a community of open source operating systems that are based on Linux kernel It was initially released by Linus Torvalds in 1991 It is free and open source operating system You can modify the source code and distribute it to anyone commercially or non commercially under the GNU public License so Linux was basically created to for personal use for personal computers But now we are using Linux on servers mainframe computers super computers and Linux is also used in the some of the routers automation controls televisions digital video recorders video games console Smartwatches the X and the other things as well the biggest success of Linux is When Linux is launched with the Android so Android is also a operating system, which is based on Linux So it is based on the Linux kernel that are running on smart smartphones and tablets So due to the Android Linux These Linux or distribute distribution system will cover all the world and Right now we are using different different. We have different different Linux distribution like reddit launched Rhel Kali launch Kali Linux and For the parrot launch parrot OS backbox OS arch Linux So we have different different Linux distributions for our purposes around 600 plus Linux distributions are available in the market So some of the most popular Linux distributions are reddit Rhel by reddit Kali Linux by Kali parrot by parrot and Backbox Fedora arch Linux open susan Ubuntu sent us these are the main Linux based operating system because Linux is Free and open source so anyone can modify it and distribute it So we need to Install a operating system, which is based on Linux So for the security purpose, we are using Kali Linux operating system And to do that if you want to install in your One to your windows based operating system. You need a software Basically, we are doing a virtualization from your computer So we need a virtualization software. The software name is Vmware workstation What this software will do This will create a virtual machine on your computer. So See you are using a windows based operating system. Let's suppose you are using windows 11 this is deployed on your hardware and You want to deploy a other another operating system onto your window. So we use this Vmware So this Vmware what will what this do This is your operating system So we create we install a Vmware onto your machine We have it is a software and then we can install other operating systems in the Vmware workstation We have any we have more than 10 other virtual machine softwares like Oracle launched virtual box UTM launch UTM for Apple based products and we have Vmware fusion We have a Vmware horizon clients. We have hypervisor from Microsoft So we have different different virtualization softwares, but right now we are using Vmware So you need to install Vmware and as you can see you need to search on Google Vmware workstation so this will You need to navigate to this website and download the virtualization software Here you can find the Vmware workstation 17 pro for windows And if you are using a Linux distribution, if you are using already a Linux distribution You can download the workstation for the Linux distribution as well So you need to download it and then install it after the installation. We need we need Our ISO image for our Linux distribution for this. I'm going to the website of Kali official website. This is the Kali official website. Kali is a company name and it launched a Linux based Operating system named Kali Linux. So what is Kali Linux? Kali Linux is a open source Linux distribution Towards various information security tasks such as penetration testing security research Computer forensics and reverse engineering. So using this operating system We can do all the tasks related to cyber security computer forensics So it have already various tools in the operating system So we don't need to install further But we need to install the operating system in our Vmware. So you need to go to the download and Then choose your installer image. So if you are using Vmware, here is some Vmware image. You can find This is the Vmware image. You need to download it If you are downloading if you are using virtual box, then you need to download this and if you are camo, you need to download this so Also, Vmware also have some small distribution for weekly updates So you can download these also But right now you can download this after download after your download is complete you need to import this file in the Vmware workstation. So you need to open it on Vmware workstation and then click on open So let me show you how this works. So this is my virtualization software I'm using Apple based products. So I'm using UTM But if you are using Microsoft Windows or any other hardware like if you are using HP laptops or a Dell laptop You need to install Vmware. Here you can find a upload section And you can click on virtualize you are in your Vmware workstation. You have find Three options one is create a virtual machine and the second one is open a virtual machine click on open virtual machine and then Select the Kali Linux image you downloaded So you need to select the image you downloaded for Kali Linux distribution and then click okay Then after the okay, you need to start this virtual machine after the after the starting process is complete You need to put an ID and password. So you can see Here is the ID and password This type of thing will appear in your dashboard. You need to type an ID password So what is the ID of our password of Kali Linux distribution? The ID name is Kali and the password is also Kali So you need to put on Kali and Kali and then login. So this is our Linux distribution where we can do our task We can Run our scripts. We can use some of the tools related to Kali related to security. So you can see Here are multiple tools for multiple purposes like information gathering We have different different tools for DNS analysis for live post identification For network and port scanners ocean analysis route analysis SMB SMTP SNMP These are all the codes and we have some more tools like nmap, recon, hyphen, ng in spider food If you go this vulnerability analysis, we have some fuzzing tools We have Nectar. We have nmap and web application analysis We have SQL map, the blue piece cap and skip face comics Database for database purpose. We have SQL map, SQL lenser for password based attacks We have some of the tools like crunch, hash cat, jonda ripper, medusa, ncrack, ophcrack and also wordlist For the Wi-Fi level security We have aircrack, ng, fern, wi-fi crack, kismet, pixie, wps, river, wi-fi So these are the tools that will crack your wi-fi So when we are going to launch wi-fi attacks, we need to use these tools and For reverse engineering purposes, we have plank and ASM shell for exploitation tool We have SQL map, sub-sploit, SEM toolkit, msf payload creator, msf framework Crack, map, execute, force sniffing and spoofing purposes We have MITM proxy, Responder, Vyashak So Vyashak will capture all the packets that will float in your traffic For post exploitation purpose, we have Weevely, PowerShell, Mimikas, Avel, WinRM For forensics, if you want to read forensics, we have some of the tools Like autopsy, binwap, bulk extractor, SD For reporting tools, we have some Faraday start, RecordMind X2 And we have SSE, social engineering toolkit as well And we have some other tools and Scripts in our Kalilinix for the security purpose or paratiscent testing But we need to understand how Linux system will operate So you need to learn some of the few commands, some of the basic commands That you need to operate this type of distribution, this type of operating system So in Linux operating system, all the commands run on a black box called terminal So here is the terminal and you can run all the commands here The command you give in your Windows based operating system You have CMD for that purpose But in Linux, in Linux distribution system, we have terminal Where we will execute all the commands related to the task we want to do So first command we have is PWD So what this command will do, this command will show Now PWD means Present Working Directory So after the end, you see this is my present working directory This is the path where I am currently working and executing my commands So PWD is used to display the location of current working directory For the current working directory, you need to type PWD These are all the basic commands for Linux terminal So if you are using some of the other Linux distribution Like Parrot, Backbox, Ubuntu and RHEL, the commands will be the same So these commands are running on the Linux terminal So all the Linux distribution, these commands will do the same task As this command will do in our Kali Linux So you need to learn and memorize these commands Because these are some of the basic commands you need To operate some of the operating system that is based on Linux So PWD will display all the current directory you are working Now if you want to list all the files in our current directory Like in Windows operating system, you have folders And in folder you have some files Like some of text files, some of document files, PDF files But in our Linux operating system you have a directory And if you want to list what the content in the directory You need to execute the LS command So LS means list And this command is used to display the list of content in the directory So what is my current directory right now? My current directory is slash home slash Kali This is my current directory path So if I want to display all the content in this directory I need to execute LS command LS means list And after the end up you can see these are all the files I have in my current directory So if you want to clear the terminal So you use clear So clear is used for clear the terminal If you are using multiple commands If your terminal is filled out So you need to clear the terminal So use clear command Clear command will clear all the terminal commands You executed previously Now in Linux operating system If you want to create a directory So you need a command like mkdir mkdir means make directory mk is for make and dir is for directory If you want to create a folder Basically a folder a directory in our Linux operating system You need to execute a command mkdir And then give the folder name The folder or the directory name you want to create Like right now I'm creating a folder named a directory named cyber So when I click this ever I enter A cyber named directory will be created Let's check if this directory is created or not So this directory will create on the my current working directory And what is my current working directory My current working directory is home slash calling So I need to check if this folder or this directory Will create it or not So I need to use the ls command And in ls command you can see the cyber is created The cyber is created So a folder or a directory is created Now if I want to go to I want to go and I want to read this directory or this folder So you need to execute cd cd is for change directory Change directory if you want to change your directory If you want to change your directory From current directory to another directory You need to use cd cd is for change directory And then type the directory name you want to go Now here I'm giving cyber So as you can see I'm in the cyber directory So cd basically will take you on to the another directory So right now I'm in the cyber directory And now if you execute pwd present working directory So it will show you this part So now you are in the home slash calling slash cyber Right so cd is for change directory Now if I want to list the content in the cyber directory Because this directory is empty So if I execute ls command nothing will be displayed Because there is no content in the cyber directory Now if you want to come back to the previous directory You need to execute change directory cd And then dot dot slash Dot dot slash will take you back from one directory So this means you want to go back from one directory And then when you execute you see I'm Coming back on to the our previous directory Now you will execute pwd So here is the home slash calling So cd dot dot slash will help you to go back Or to switch directories If you want to go back If you want to like if I create multiple directories Like in cyber Right now I'm in the cyber directory And here I'm creating another directory Like cyber one And then you can see Here is one more directory will be created So I need to go to this directory Cyber one So you can see the path will changed And now if I do ls there will be no content to display So if I want to I execute this cd dot dot slash There is one only one directory back So I need to use cd dot dot slash one more time To go back to our main directory So dot dot slash means you want to go one directory back Let's move again to the our directory This is my cyber directory and then I want to go cyber one You can use the cd command for completely This command will take you back all from the previous directory Not one directory back all the directories back So if I execute this You directly forwarded to your main directory So you can use the cd command as well And this command will take you back to your main directory Now if you want to remove a directory like here You want to remove this You want to remove this directory You need to execute a command Which is called rmdir rm means remove and dir means directory So if you want to remove cyber one You need to execute rmdir And then give the directory name So here my directory name is cyber one And then when you enter This directory will be removed If I execute ls As you can see there is no directory present in our Current directory This cyber one directory Directory will be deleted So rmdir command will used to delete the content Delete the directory If you have a directory If you want to delete a directory you use rmdir Now if you want to create a blank file If you want to create a blank file You need touch Touch command is used to create Empty files And if you want to create an empty files Give the file name like demo.txt There is no content in this file And if you execute this A demo.txt file will be created Let's see this file is created or not ls If you do ls You can see demo.txt is created Now if you want to read the content inside a file You need to execute a command Called cat Cat for cat Using the cat command You can read the content of a file So if I giving here demo.txt You can see there is nothing to display Because this file This empty file will be created So touch command will use to create an empty file And cat command is used to display the content of a file So if I want to show you Using cat I am opening some of other files Like you see This is a text file and I have some data related to twitter So there is the data Here is the all the data Which have in this file Twitter, url.txt So cat is used to display the content in a file And if you want to create some If you want to Upput some data inside a file Cat is also used to create a file Display the content a file So using cat We can create Use this And then give the file name Like demo.txt And then put the data This is demo file So this data will be saved in our demo.txt For saving purpose You need to press control plus d Press control plus d to save the file And to display the file we can use cat command So control plus d And then you will see your file will be saved And then use cat command to open the file So you can see this content will be displayed So cat is also used to create a file to display a file If you want to create a file And want to put some of the data in our text file For any other extension based format You need to use this special character And then give the file name Put your data inside a file And then press control plus d This will save your content into your given file name And if you want to display the content You need to use cat demo.txt And then your file content will be displayed Now if you want to remove a file Not a directory, a file So if I want to remove a directory I use rmdir But if you want to remove a file A text based file Or any extension based files Like some of the content So if I want to remove this demo file I need to use rm And then the file name So rm is for remove And you can see This demo file will be deleted So there is no demo file to display And you see There is no such file and directory So this demo file will be deleted So rm is used to delete the file Now if you want to copy some of the file And want to change the directory And change some of the data to another directory Like let's go back to this There is my directory I need to create one file So we use cat and then demo.txt And put some data Test data So this data will be created Use this with cat demo.txt And you see the content will be created Now if you want to copy this file Into your main directory Or any other directory You need to use cp command cp is for copy And then give the file name you want to copy So I want to copy this demo.txt And give the file path Where you want to copy the file So I'm giving slash com slash kali And then click enter Your file will be copied Now go back to your directory And check if the file is there or not So you can see The file is also present in our Present working directory slash com slash kali This is also called our home directory as well Now if you want to not copy But want to move your file Then you can use this command move So I want to move this file to our directory So give this file name And then the path Where you want to move your file So I'm giving slash com slash kali And then slash cyber So there is no file Let's see This file will move to our directory Let's check if the file is present or not So I'm going to the cd cyber My directory is changed Then can ls and our file So file is also moved with the help of mv command If you want to display your content of the file You can also use the head command Head command is used to display the content of the file But first 10 lines If you have a file that have a lengthy data in it But you want to display first 10 lines of a file You can use head command If I give here a file name You can see there is no lengthy data But you can see the our data Let's move to your main directory And open the twitter file These have multiple lines So it will display only 10 lines First 10 lines will be displayed With the use of head command So head command is used to display the content of the file It display only first 10 lines of a file Now the tail command Tail command is similar to head command The difference between the both command is that The head command will display only first 10 lines But the tail command will display the last 10 lines So if I open the same file You see these are all the last 10 lines in our file So head and tail command is used to display Last and first lines of a file Now see If this is our user But if you want to give all the files to super user privileges You need to use sudo sudo and then su sudo su command provide administrative access to your terminal And then you will go back You will go to the root Click enter It will ask your password Password is alil and then enter Now see you are in the root directory So root have all the administrative rights So if you want to modify some files or you want to use Or if you want to install some of the tools Which require root privileges So you need to type sudo su And then sudo su And give you a password And you will go to the root user If you want to come back To our kali user You need to type exit And then this command will take you to your kali user To your user So if you want to switch from root to user You need to put exit And if you want to switch from user to your root user You need to put sudo su There is one more command Like I want to Open this file But this is my file name And I want to Search something in this file So we use grab So grab command will Capture Or will cut Or will search the content in You are giving in via grab So let's give some word Like post So if post is available In this text file it will be displayed And you can see the post Is available in all the links I have in this file So it will be highlighted So using grab You can grab some of words, some files Some extension Some of the alphabets you give Using grab So grab will Search the word In your content And display the result So these are some common commands We use in our Linux operating system And after You need to practice on these commands Because these commands are necessary To learn or remember And to operate all the Linux distribution Moving further If you want to update your Linux distribution you need to Use the command apt-bad And then update This will update Your Linux distribution Click on enter and you will see Permission denied Because the update Command will require root privileges So we need to give them root privileges And then Next we need to execute this command So giving the root privileges You need to type sudo su And then here you can see I am in the root user Now if you type apt-get Update The updation will be started And your Linux distribution will be updated In few minutes So these commands are known as Update command Let's go back to our Kali user And clear the terminal Now If you want to see the IP address Of your terminal You need to put ifconfig Ifconfig This command will display The IP address of your machine So here you can see This is the IP address I have For my Linux distribution So this command will display The private IP of your operating system Ifconfig Now You need to install some Scripts and some of the Tools related to cyber security So we need to use python And go languages So python is already Pre-installed in our Kali So to install go For installing the go You need to use this command sudo apt install And then golang-go This will install the go language In your Linux distribution After the installation You are able to use The scripts Or softwares or tools That is required go language And are created using go So some of the tools we are using In our next sessions So we need to install Go language So you can check With the help of go version You see go is installed And the version is Displayed Let's see the command again sudo apt install And then golang-go But for installing this Command or to install go First you need to update Your Linux distribution So before using this command You need to use sudo apt hyphen get and then update After the update You are able to Install go language In your Linux distribution If you have some Questions or queries Regarding these commands In the cat section I think we don't have any questions So we can proceed further Okay Let's see So basically When you do Updations When you execute this command apt hyphen get Update Right now you will get an error Because there is some glitches in kali linux distribution So I want to give you a solution So you need to open Using a file called slash etc slash apt and slash resources This is the file Let's first see the file etc apt And then list So this is You need to change this file You need to make Some of the changes in this file So let's open this file Using vim So vim is used to Change or to write Something in the file or you want to If you want to edit the file So vim is an editor Let's open this file And here you can see In your file you see The URL is sttp colon slash sttp.cali.org So you need to change this To sttps And then after the changes Your updation command will work And your go Will install perfectly But if you are not doing the changes Your go will not install Because we have some problem in our Latest kali distribution So how to change this sttp To sttps You need to edit the file So while editing the file You need to press I Let's see again So You need to Put this And then press ESC And execute this colon wq and spr metamark Let's give this pseudo permission Now open the file cd slash ptc slash apk Open the file Sources And then Added the file using WIM WIM slash Sources Press I I is for insert If you want to insert something inside the file You need to press I after using the WIM And then insert S I already inserted S Because You see this Linked in your file So you need to change this to this You need to forward it to sttps And then press ESC Of your computer Escape button on in your computer And then put hyper wq And sclimate mark for quit So this command will quit the file And your file will be Updated Let's check again If our file is updated or not Here you can see This sttp will transfer to sttps And your apk Update command will work So you need to Make this slide changes in your This file apk slash Sources.list So guys These are some of the Basic commands in your Linux distribution So you need to practice and you need to Learn and remember all these basic commands Let's see how to Install some of the basic softwares In our Linux distribution So I want to install This script called Asset Finder I want to install This script named Sub Finder And these are Some of the scripts that will help To Discover the sub domains Of a domain So for Discovering the sub domains You need to use These scripts And to do that you need to Install these scripts So let's see how to install Let's go back to our Main terminal Let's clear the terminal And you need to enter You need to type Asset Finder Then hit enter When you hit enter Your Asset Finder will be installed Because The Asset Finder library or package Already have in Kali Linux So Asset Finder tool or script will be Installed automatically Upon typing Asset Finder And then hit enter Similarly you can install The sub Finder as well By typing the sub Finder and then hit enter Your sub Finder is also installed Using this So You need to install these two Scripts in your terminal In your Linux So then we can Find or discover all the sub domains Of a domain And tomorrow we Also install Some of the new tools To Grab URS or to Search sub domains How to scan ports Make files how to Run a scanner So you need to install GoFast And then we can install All other tools tomorrow So guys, you need to practice some of the basic commands To perfectly running Your hands on the Linux distribution So I already told you all the Basic commands Re-watch the video and practice On these Linux distributions So your hands Will You remember all the commands For further Classes Okay, so I think this is it for Today's session, right? Yes Okay guys, so We'll be doing one more session tomorrow And as Sumit told you Like he will be guiding you How to install some more softwares So thank you for joining today's session And practice whatever Sumit demonstrated and I think for cybersecurity Whatever Right now we are understanding is more important Along with the concepts That have done so far So continue All the session if you are cybersecurity Enthusiast Okay, thank you Sumit for sharing Your knowledge And giving your time To the audience And those who have joined live And those who are watching the recording Thank you so much for watching The sessions See you tomorrow, thank you everyone


Hi everyone, Joe for Jaspy's CaseGrakes.com coming at you with 2021 at Padini Diamond Kings Baseball, one box ram team break number three and giving away the final six flawless spots. But as always, we're gonna do the break itself first and make you sweat it out a little bit. Big thanks to this group of people here for giving this a shot and all 30 teams are in. Let's roll it, let's randomize it. Six and a four, 10 times. One, two, three. Four, five, six, seven, eight, nine, and 10th and final time. All right, six and a four, 10 times, four, the teams. Two, three, and 10th and final time. Diamond backs down to Marlins. All right, so here's the first half of the list here. Not gonna read everything up. I'm gonna save my voice for the flawless break itself. It's coming up in a different video after this. So this is the second half of the list here. Let's just print this out and let's roll. There's the final list, hot off the presses. Could be some surprises in the box itself. Let's see what we got. Ty Cobb. Hold that nice Ty Cobb cut auto last night. That was awesome. Very unexpected, but hey, that's why we, that's why we play the game ladies and gentlemen. You never know what's gonna happen. Let's see who's Sanchez. He's a jazz chism right there. He's pretty good. Casey Meis and the Estevan Floriel autograph. That's 55 out of 99 for the Yankees. That's gonna go to Eric Jennings. Casey Meis for the Tigers, Tyler, jazz chism for the Marlins, Joshua, Brian Hayes, Lou Brock to 25. Lou Brock to 25 going to Daniel and the Cabrion Hayes going to Adam. What club is Justin Verlander? Apparently, milestones were two for one on September 28th in Los Angeles. Verlander recorded 12 punch ups in his final start of the season. The double-digit performance helped the signing winner become the 18th between 3,000 Ks and give him 300 in a season for the first time in his career. Wow, it's a good club. It's a good club to be in. And we got a Cabrion Hayes, debut Diamond King's Gray frame. And we got a Tristan McKenzie dual relic. 81 out of 99. Cleveland, this is for you. Dylan with Cleveland Indians, Joey Bard and Nick Madrigal back here to get well soon. White socks, that's gonna be for Ryan and the Giants, that's gonna be for Monty. Now, not a bad box, but the whole point of this is who's gonna win those flawless spots. So back to the list here. Let's grab everyone's names from Jerry down to Joseph and everyone in between. We got some new dice, got a blank list here. Let's roll it and randomize that list four and a three seven times. So again, it's gonna be top six after seven. Good luck. One, two, three, four, five, six and seven in final time. Now from seven on down, it's gonna be sad times. So Daniel very close, no cigar though, but listen, thank you for giving this a shot everybody. I appreciate it. So the happy times though is here at the top six. That's gonna be Corey, Daniel, Mark, Joshua, Jerry and Ryan. I don't feel so bad anymore, Daniel. You got yourself a spot anyway. Hey, thanks for watching. Thanks for giving this a shot. I appreciate it. I'm Joe for jaspeyscasebreaks.com and we'll see you in the next video for the next break. Bye-bye.


Good day and welcome to Learn WordPress. In this session, we are going to look at how to add a pattern from the pattern directory to your theme. Patterns, of course, allow you to add beautifully designed, ready-to-go layout to any WordPress site, which you are able to modify and change as you please. There are various patterns that come with your theme and can be found when clicking on the Inserter. And next to blocks, you will find Patterns. And when you click on the drop-down arrow, you will see all the pattern categories. And when you click on Explore, you will get an overview of all the categories and available patterns that come with your theme. If you want to explore other patterns, you need to make your way to the pattern directory. And here are loads of patterns that you can easily just copy and paste into your page and then start modifying. But what if you want to have one of those patterns available on your site when you click on the Inserter? Maybe you want to reuse a pattern multiple times or you are working with a client and want to prioritize certain patterns for them from the pattern directory. Well, then you are in the right place. I am going to show you how you can make a minor tweak to your Theme.json file to add a pattern from the pattern directory to your list of patterns when clicking on the Inserter. Please remember to use a child theme to ensure that these changes are not lost when updates are made. So if you find a pattern in the directory that you want to add to your theme, you first have to open it and then merely copy the slug of the URL, which is basically the name of the pattern, and then make your way to your Theme.json file. I am using Visual Studio Code to make the changes. When I am in my Theme.json file, I will add the code snippet below the version. Firstly, I will add double quotes and type patterns, followed by a colon, and then add a space, square brackets, press enter to start a new line, add double quotes again, and then inside paste the slug that you just copied from the pattern. And don't forget to add a comma after the closing square bracket. Then it's time to save, and in my case, I'm going to press on Command S. Then we can head back to our WordPress site. I've opened a blank page, so the first thing I'm going to do is refresh the site, and then click on the Inserter and make my way to Patterns. We added a buttons pattern to our Theme.json file, so I'll use my categories, go to buttons, and when you scroll down, you will now see that this pattern is part of your theme, and you can insert it into your page. The last thing I wanted to show you is that you can of course add multiple patterns to your Theme.json file. So to do that, find a new pattern that you like, open it up, copy the slug, return to your Theme.json file, and then add a comma after your first pattern. Press Enter, add double quotes, and paste the slug of your second pattern. Once we save, we can go back to our WordPress site. When you have refreshed your page, you can click on the Inserter again. Patterns, buttons, and now you will notice the first pattern we added, as well as the second. So as you have seen, you can add any pattern from the pattern directory to your Theme. Visit Learn WordPress for more tutorials and training material.


Katisaal is proud to present Katisaal Ed TV. Hello Katisaal. This is Danielle Pelletier, your president, and I am saying hello from Tisaal 2019 in Atlanta, Georgia. I am here with your president-elect Susan Gair, and we have been attending many affiliate workshops and learning so much from other affiliates in Tisaal, and we've come up with some really great ideas that we can't wait to share with you. A few announcements. If you haven't yet gone to a regional or you're looking to go to a regional conference, there are two upcoming conferences. One regional is in Northern California. That takes place in Santa Rosa, Junior College, and that is May 11th. We hope you can go. Also, there is one coming up that's really exciting because it's the first time. It's called the San Joaquin Valley Regional. It's actually two chapters that are coming together to create a regional conference, and that is coming up on Saturday, April 6th, from 9 a.m. to 2 p.m. It is the Sororian and Yosemite chapters collaborating to make this work, so it's very exciting. We hope you can go, and that's happening at the Modesto Junior College. If you need some funding help to attend one of these regionals, there is still time to complete an application to win a stipend from the Katesal Education Foundation. This is Katesal's charitable arm. They're the 501C3 arm of our organization. So, if you'd like to attend and get some extra money to go, please go to katesalfoundation.org. Click on the awards tab, and there is a button that says something like complete application here. You must do that two weeks before the event, so check that out. Also coming up is Katesal's 50th anniversary. Yes, Katesal was founded in 1969, and we're celebrating at the 2019 conference our 50th anniversary. So, the theme is honoring the past, inspiring the future. So, we hope you can go. It's in San Jose at the San Jose Convention Center, October 3rd through the 6th. We hope to see you there. If you need professional development funds from your educational institution, please start now, and that will give you hopefully plenty of time to secure some of those funds. We hope to see you there, and that's all for now. Susan Gehr and I say hello, and take care, and hope to see you soon at one of the wonderful Katesal events we have coming. Bye.


In today's world, individuals and organizations have to operate in a constantly evolving environment. The overwhelming amount of information at our disposal can make it difficult to focus and prioritize, let alone understand the big picture. This makes the ability to tap into a curated global network of experts from academia, government, business and civil society a decisive strategic asset for any organization. And this is why strategic intelligence now offers advanced features that enable its users to deep dive and make sense of issues that are the most relevant to them. For example, let's say you want to understand how the Internet of Things can drive sustainability in different sectors. On our current transformation map, you will find that by selecting thoughtful rules and standards, the Internet of Things can unlock a wide range of benefits for energy, mobility and food systems. But let's imagine you are interested in additional sectors or in diving deeper on these topics. By creating your custom map, you can explore the dynamics most relevant to you and your organization. For instance, you might want to look into ways the Internet of Things creates sustainability opportunities for digitalization in the electricity sector, smarter infrastructure and energy efficiency in the mobility sector, the expansion of circular models, how it can help curb water waste and enable more efficient food systems. Your custom maps effectively become a dynamic monitoring framework embedded in the wider strategic intelligence ecosystem. Every day, our built-in machine learning and artificial intelligence system scans thousands of the world's most trusted research publications and pieces of analysis on hundreds of topics allowing for the deeper exploration of your selected issues. This information is summarized in continuously updated briefings specific to each map. Strategic intelligence advanced features can also help identify priority signals emerging within your areas of interest, including key clusters and trending topics. This allows you to get clarity out of complexity, stay abreast of the latest global developments and drive strategic conversations within your organization. Start now. A warm welcome from the World Economic Forum. My name is Stefan Merckter, it's a real pleasure welcoming you to this session along the very first of this year's Sustainable Development Impact Summit taking place in this virtual format. I'm joined in this conversation by Marie McAuliffe. She's head of research at the International Organization for Migration. Thank you very much for joining us and thanks to all of you for being part of this discussion this morning. It's really gratifying to see that so many of you are joining this conversation, which we believe is so fundamental to what we are all here for the 2030 Sustainable Development Agenda. I think it's clear to all of us that we need much more joined up thinking. We need to step out of our sectoral and disciplinary silos. We need to build more diverse and encompassing partnerships, if we want to really change course and put ourselves on track for the kinds of transformations we need to see in the world. And that is precisely why we convene this Sustainable Development Impact Summit, but it's also why we invested early on as World Economic Forum in this effort we call Strategic Intelligence to give people an asset to facilitate this kind of joined up thinking about complex global issues and consolidate all the most relevant research and analysis behind that. Let me just remind you that we really want to bring you all into the conversation as well. So you can ask questions and participate by logging into slido.com. You saw the reference at the beginning of the session. If you haven't taken note of it, it's slido.com and you use the tag SDIS and also make sure that you select the right session, then you come right in here and we bring in your conversation. What we want to do here and Marie, you've been working with us for several years now on this with focus on migration, which we feel is a very good illustration of one of those complex global issues, which really cut across so many other areas in ways that are often overlooked. And maybe just to kick us off, Marie, if you could give us a sense of how you from the perspective of the UN at this moment in 2020 are looking at this global landscape of migration. What is really top of mind for you when you look at these key issues on migration? Well, thank you very much, indeed, Stefan and also to your team for this invitation to really go through some of the enormous benefits in relation to the transformation maps and the strategic intelligence. As you have mentioned, I started working with the forum in 2016 on this particular transformation map and part of the attraction for me when the call came out for people who were interested in working on this was exactly as you have articulated in that wonderful video at the beginning, I articulated the ability to bring together some of the really big sort of global trends that have been occurring for quite some time to be able to carve out some clarity for people who need to get across complex issues in a very short space of time. So the two elements that I particularly were drawn to was the briefing and the written sort of content, but also how it's interactive and you are able to see the linkages. At the moment, one of the things that we know is incredibly pressing and in the context of course the sustainable development goals and the summit is inequality and uneven development. Migration is in many ways central to this as many people know, migration is recognised in a number of different targets in the sustainable development goals in the SDGs and we've also been highlighted the growing inequality through the human development report put out by the United Nations and UNDP in particular and last year's really did highlight that inequality is growing both within countries but also increasingly and certainly as it relates to international migration between countries. So we know that inequality and uneven development is one of the drivers of international migration. Secondly, in the current environments, it's also really important to highlight conflict and security challenges. We've defined this broadly. Of course, we're talking about civil and transnational conflict or war in other words, but we're defining that in a very broad sense. So it can encapsulate some of the aspects related, for example, to slow onset climate change impacts such as food insecurity and so forth. And as you'll see on the outer ring, one of the wonderful aspects to do with the transformation map is you can click straight through, you can see climate change, click straight through to climate change and get the big picture on climate change as you need to and then you can just hit back and return back to the migration map as well. So it's a very easy way of being able to navigate those connections. And lastly, I really do want to point out in the context of COVID-19 and a lot of challenges that we are seeing right the way through the migration cycle. Migrants rights, human rights for migrants, as others may call it, is central to migration and we are seeing very significant challenges right the way through the migration cycle in regards to the immobility restrictions in relation to COVID-19. And here I'm talking about the inability for people who are facing conflict and insecurity in their home countries to be able to leave them. We're not seeing the ability for people who are seeking international protection, for example, asylum seekers being able to enter other countries. And we're seeing many, many migrants stranded as well as a lot of migrant workers right on the front line in different sectors around the world. So those are some of the pressing issues that go straight to the heart, I think, of development and how we need to be working in partnership to be able to, you know, it's an overused term, but it's still a highly relevant one to build back better after COVID-19. Thanks, Steph. Excellent. Thank you. And maybe then moving more specifically to the link with the 2030 sustainable development goal agenda. Where would you see, and I think we mentioned in the introduction, migration really cutting across a whole range of issues, but when you look at that link to the 2030 agenda, where would you see sort of the most pressing issue to address in that context? And why does it matter and why is it maybe sometimes also overlooked in that sense? I think there are a lot of challenges, of course, being felt right the way through in terms of COVID-19. In pointing to the SDGs, the first one, of course, is target 10.7, which is safe, orderly, regular migration. And global governance is key to this and the global compact for safe, orderly, regular migration, as we know, is finalised by states in late 2018. So COVID-19 has posed a number of challenges, as I mentioned in regards to human rights, of course, but also there's some real opportunities, I think, too. And we know, of course, that cheaper remittances, for example, is again highlighted in the SDGs. We have seen the longer term projections, of course, because of the economic impacts that the globe is facing in regards to COVID-19. But we're also seeing some very interesting data coming through with a 20% decline predicted in international remittances in 2020, but quite significant surges in some origin countries. So we're seeing inflows increase. Mexico, the Mexican Central Bank, for example, has reported a very significant increase, as has Nepal, as has the Philippines and so on and so forth. It's not consolidated yet. Of course, there will be reporting in coming months at the global level. But what it does highlight, and we've seen this from previous pandemics, of course, they were on a much more local scale. They weren't global as COVID-19 is. But during MERS and SARS, for example, we have seen increases in international remittances to countries that have been affected because migrants, of course, want to help their families and communities. So if they are able to, they will be sending back remittances. And what that means in the context of development and also softening and alleviating some of the COVID-19 impacts, that migrants are not only frontline essential workers physically, but in terms of international remittances. They will be on the frontline for socioeconomic recovery. And if we can assist the flows of remittances, and what I mean by this is going back to the SDGs to make remittances cheaper, faster, safer, more reliable, traceable and so forth. And part of the way of achieving this, of course, is through mobile money applications in different parts of the world. We've seen some Saharan Africa have a very high penetration rate, for example, because their formal banking system isn't necessarily as robust as other parts of the world. So part of seeing some of the data coming through, being able to analyze that, look at it in the big picture, does lead you to identify some clear actionable kind of outcomes and priorities, both in terms of international migration, more broadly being an opportunity, not just a challenge. And of course, we have to recognize that it can be a challenge. But also in terms of the use of technology to be able to soften and alleviate some of those impacts. Brilliant. Thank you. Thank you for making that link and maybe just to illustrate for our participants here just the magnitude of what you were describing. I just wanted to bring in a little focus on data and helping us visualize the extent of what you were just talking about, because we don't always have that much focus on remittances in this financing discussion. Here you see just a quick global visualization of the flow of remittances from countries of origin where the dots are white to the receiving countries, where they turn green from just over the last couple of years. And every dot you see on that screen is one million US dollars. So just coming back and illustrating some of that, some of the magnitude of this. Thank you. Thank you for making that link, Marie. But I wanted to maybe just dive a little bit deeper before we come to other questions from the audience. What would you alluded to some of the potential solutions but what what do you in this in the spirit of sort of cutting across sectors and having partnership based solutions that cut across these various different dimensions of the of the problems. Where would you see the biggest potential for making an impact with with regards to to migration remittances in in in that sort of recovery and development agenda. Well, certainly IOM has been focusing as have a lot of other organizations, and there is actually a call from the UN with all of the different agencies within the UN to ensure that we are able to enhance remittance flows to make them more sustainable and so forth. But in different parts of the world we're seeing different partnerships at the more at the local level and what I mean by that is really within countries themselves. So in the Pacific, there has been a number of partnerships, for example, to try and encourage people to utilize the technology by providing, for example, the first sort of month for free to be able to reduce the remittance costs and so forth to be able to get things moving. Of course that means that we have to have money to remit so migrants need to be able to transfer that money, of course, back to their friends and family. So the, you know, the the broader economic environment is going to be particularly important. But we are seeing an uptake because of isolation because even migrants won't be able to get to the money transfer operators offices. There has been the need to utilize technology and utilize, for example, mobile money applications. And that has seen significant uptake in areas where that is able to be where it's able to be utilized. We have to be mindful to, of course, around ICT accessibility issues globally. In some parts of the world, there isn't the same access to ICT as there is say, for example, in Switzerland, in the United States and in other countries. There's also the gender implications that are particularly important. And we've seen for a long time over many kind of decades in regards to remittance research that women migrant workers tend to remit more in terms of the proportion of their incomes. Same at the other end, they do tend to use more of the remittances being transferred on their families and their communities. However, their access to ICT can be lower in certain parts of the world. That's not everywhere. That's not uniform. But also their salaries tend to be lower than for other sectors. And I'm here, I'm talking about domestic workers. We're talking about healthcare workers, those who work in agriculture, for example, harvesting and so forth. So if we can especially put through a gender lens in regards to migration and remittances, understanding the existing research and analysis to be able to tailor tools with specialists in the field, industry, the technical components with remittance mobile money app providers, but ensure that they are able to counter some of the potential negatives or unintended consequences. Then we will have a much more sustainable and also a much more effective way of tackling some of the challenges that we're seeing at the moment. Brilliant. Thank you. And thank you for making that illustrating really that multidimensional nature of the problem. I want to bring in a couple of points here from our participants and maybe starting with the first question around which of the SDGs you see acting as push factors for migration and have these changed under COVID and therefore should be prioritized by policymakers? Yeah, I mean, as I mentioned at the beginning, sort of inequality is a very significant issue. And of course, the human development reports of late last year really highlighted that. And that was right across a whole range of different aspects in terms of education, in terms of health, in terms of human rights and so forth. One of the aspects that we've incorporated into the map is it's not just the inequality. It's also the ability for communities, for people to see how others live increasingly so because of the pervasive nature of some of the telecommunications technologies and so forth. So trying to marry those sort of tensions and provide opportunities for a range of different communities, especially through safe, orderly and regular migration means that we need to be countering, you know, the illicit practices such as human trafficking. Many people are very concerned about COVID-19 and the immobility restrictions, creating further pressure on communities as they engage in what some would call survival migration. So there's that aspect. But being able to forge partnerships, whether that's at the regional level, whether that's at the sub regional level to be able to provide opportunities, including through international and internal migration. Then we will be able to actually try and, you know, really soften some of the differences and the difficulties going forward. It's not going to be easy. That is most definitely the case, but to be able to recognize that through some of the key data is, I think, going to help in terms of showing that clarity out of the complexity to point to areas of, you know, significant action. So the implementation of the global compact for safe, orderly and regular migration, of course, is actually gaining a lot of ground in the context of COVID-19 because it is showing how important it is to have international cooperation for these types of outcomes. Right. Brilliant. And that leads quite nicely to another question that came up from the participants, really making the link to data. You talked about that and the importance of really having systematic data collected on migrants. How do we ensure though that there's no infringement on privacy? So that link with that whole digital rights and privacy discussion in the context where that is obviously a very important factor. Yeah, I think so. I mean, if we're talking about, and this one is certainly coming up in regards to the monitoring of mobility. In the context of COVID-19 really has brought to the surface the capabilities to monitor how people move, where they move, exactly where they're going. I mean, there's a number of big, you know, providers and big tech companies who have released, you know, community level data to show that there is a, you know, very significant amount of data. And of course, the privacy and confidentiality issues are very, very significant. And there's a lot of focus on that, which I think is an enormous strength in our system that we are able to see that there are privacy concerns and push for enabling people to protect their, you know, digital privacy. One of the things again that COVID has really brought to the surface is the need to protect our privacy and how data and so forth. In the context of apps that relate to safe remittances, for example, it has almost the opposite effect in terms of instead of going through informal systems, which have been open to exploitation and abuse. Being able to use mobile money apps that are able to be traced that have a different kind of like infrastructure backing them has actually shown over time. And this is long term research not specific to COVID-19 that it is safer for migrants to remit money through mobile money applications. So technology can be sort of double-edged. It can provide real benefits. But it can also have some downsides that we as an international community need to be monitoring, especially as they relate to human rights. And certainly privacy has come up quite significantly in regards to mobility of course. Brilliant. And maybe this is a good moment to bring back the map again. Because there's a question that really builds on this point here around talent patterns. And the question is to what extent the impact we see right now on changing migration patterns partly of course as a response to the pandemic. But how that trickles down to business and sort of making that link to the impact changing migration patterns have on businesses and the economic recovery agenda. You touched a little bit upon that in the beginning, but maybe you can elaborate a little bit. And certainly in the SDGs, international students are highlighted in terms of their migration because we know that in many systems and countries throughout the world that international students are a key, not the only, but they are a key feeder group for talent mobility sort of purposes and so forth. And we are seeing, unfortunately, the COVID-19 mobility measures are not, they're not specific to groups of people, they're not specific to asylum seekers or refugees or migrant workers. They have also impacted international students very significantly, and we will see the ramifications for the longer term. So businesses will be affected by the immobility regimes and the reduction in international education services, if I can put it that way, for many years to come. On the upside, again, everything is double edged, but on the upside we are seeing a real push for improvements in virtual education. Now, virtual education, of course, cannot replace in person education and tuition. I think there's, you know, groundswell of agreement on this. But what we can utilise is we can use virtual platforms to reach people who we wouldn't necessarily have been able to reach before, to try and work harder to be able to, you know, get children in displaced persons camps to be able to access education services, for example. So while we're seeing talent mobility, you know, really reduce along the same lines as other cohorts, it does highlight that there are some other opportunities that we do need to explore and work together on. Brilliant. Thank you. Thank you, Marie. And this ties into a final question that I want to bring in both from the audience and then make it a slightly broader question. The point is here about whether some of these economic implications of migration are really widely understood and what you maybe as IOM are doing to help convey and communicate that wider impact. And if you allow me in bringing this to sort of a wider question in conclusion for this session, really reflecting on how we can more effectively bring this complex understanding, the multi-dimensional nature of these problems that we're dealing with into organisations and how you reflect on that from the perspective of where you sit. Well, exactly. And we certainly have been approached in regards to assisting with some of the thinking around impact investing, for example, for migrants and for refugees, because it also makes a lot of business sense. I would go back to some of the work that we have utilised in our own research and analysis by McKinsey and Co and, you know, some of the big picture macroeconomic analysis that they have done in recent years. So they have estimated, for example, that international migrants have contributed 9% to global GDP. I think that was in 2015 or 2016. But at the same time, we know that international migrants were 3.4% of the global population. So there's so much research and analysis. We actually used it in one of our thematic chapters for the World Migration Report 2020, our flagship publication to really highlight that migrants make enormous contributions to our societies, including through economic means, but also socio-economic sort of issues, civic political issues as well, their cultural kind of aspects in rich our lives daily. But the economics are pretty clear. They are very, very much needed for economies in order to be able to support labour markets and support growth. So one of the ways I think that we need to tackle that is to try and get more of a balanced message out. Often the challenges of migration and displacement are highlighted, but there are significant opportunities. And many people online today are international migrants themselves. They work with international migrants. They understand that, but they might not necessarily think about themselves as migrants. And that I think is part of the challenge for all of us to be able to identify clearly what we're talking about in terms of some of the definitions and the concepts to not just think about migrants in kind of negative terms that are challenging systems, but to think about migrants also as some of the vectors for change that some of the big contributors to our societies. Brilliant. Thank you very much, Maria. I think this sets up ourselves very nicely for the kind of action agenda we want to see in the following days. I should say if you want to carry forward this conversation after the session, please don't hesitate to connect with and reach out to Maria after the session. All the material that we referenced is available to you. You've just seen the link come through in the chat. And of course, we're very happy to carry that conversation forward as well in terms of how you can tap into some of these resources more systematically in your respective organization. So with that, let me thank you, Marie. Let me thank the audience for being part of this kickoff discussion in a way for what is hopefully for everyone a very impactful and productive, sustainable impact summit 2020. Thank you very much. Thank you very much.


Thank you so much for coming along so early this morning. Must be hard after the party last night, but this is a great turnout. So judging by the accent, you're probably thinking this guy comes from somewhere far, far away. Some island on the other side of the world. Oh, that's the wrong one. Here we go. So let me just rotate this just so it's the right perspective for you from this angle. This does mean that yes, my talk is in English Australian, not freedom English. So I might say a few things that might confuse you. Most likely it means something completely different to what you were expecting. So I'm one of the co-organizers of the Melbourne MBJS Meetup. But when I found out I'll be speaking at Embercon, I was actually partying in the jungles of Ubud in Bali, Indonesia. So it's been a really fun ride over here for the last couple of months. And I'm one of the co-founders of the load testing service, Flood.io. We build, well, we're a completely distributed team, which is obvious being all over the world, but we build insanely easy to use performance testing tools to help you succeed at load testing your app. And what I'm about to share with you today is largely, I guess, discovered through trial and error while we were building Flood. So I'm gonna start with a couple of questions that we asked ourselves at the beginning. What is data visualization? And after searching around for a while, an answer I came up with that I quite like is, it's a visual representation of abstract data to amplify cognition, which kind of leads to the next obvious question of what's the most natural tool for specifying a visualization? Perhaps it's a configurable charting library, or a configurable chart, or a high-level charting library, or maybe low-level geometric shapes and graphical markings. Each abstraction offers its own advantages. For data exploration, you may desire speed or efficiency so you can quickly test different views to discover patterns. Whereas for explanatory visualization, such as communicating a discovery to a wider audience, you may favor greater control of the final presentation to communicate discoveries more clearly. When we talk about efficiency, we conjure up words like speed and performance. But what really matters in data visualization is being able to produce a visualization quickly and having the flexibility to change it just as quickly. The most immediate tool that comes to mind for this purpose is the configurable charting program. Or as I've come to call it, the configurable charting program XP Pro. This could be Excel or it could be many of the larger JavaScript-based charting libraries available today.  The problem with these programs is that they don't really help you make discoveries in your data and can oftentimes prevent you from communicating the right discoveries to your audience. But most of all, customization has limitations. To quote Layland Wilkinson, the author of the Grammar of Graphics, if we endeavor to build a charting instead of a graphing program, we all accomplish two things. Firstly, we all inevitably offer fewer charts than people want. And secondly, our program will be devoid of any deep structure. Our computer program will be unnecessarily complex because we will fail to reuse objects or routines that function seemingly in different charts. And we'll have no way to add new charts to our program without generating complex new code. Elegant design requires us to think about the theory of graphics, not charts. When I think of elegant design, separation of concerns is something that comes to mind. This implies that concerns such as presentation and data are logically separated. This is surprisingly rare in charting packages, even as a core principle of, say, object-orientated design. This often leads to data configuration and presentation attributes all being present in the same place. Now, this is the configuration of a popular charting program. I'm gonna throw some big red arrows on here so that we're both talking about the same thing. Not only do we lack the separation of concerns of data and presentation, but we're specifying the presentation somewhere abstract from where it's being used. And maybe this gives you maximum flexibility, but so does PHP, and that's not a justification for using it. Apologies to all the PHP developers in the room. In object-orientated design, it's often advantageous to encapsulate each responsibility of your program in its own class such that each component does one thing, and it has the opportunity to do that thing really well. This is the configuration from another charting package. Now, it exposes configuration properties for at least half a dozen different concerns, which I've highlighted here. And I call this the curse of too many options because as a user, you have to read the documentation of each of these, and as each subsequent version of this charting package is delivered, the complexity is inevitably going to increase and require changing what the meaning of these properties is as the design changes, which can lead to your application breaking for reasons that don't seem quite obvious at the surface. Whenever I use one of these packages, I remember Layland's advice, and I just can't feel like I'm importing somebody else's technical debt into my application. And when it comes to debugging this, this is a walk off the familiar path of debugging EMBA where the code can often resemble something like a yak that needs shaving. And let's face it, customizing this chart to meet your requirements may as well look like this. Because when you call up your teammate, the conversation is going to go a bit like this. I hate him. That option that the boss wanted, what does it do? All right, does he still need it? You don't know? Well, can we turn it off? All right, what else is it going to break? All right, thanks mate. We'll deal with it in the next sprint. I feel like I've ranted about all the code too much. Let's talk about expressiveness. When it comes to expressiveness, nothing beats D3. It's extremely terse syntax has for many years allowed data visualizers and engineers to produce some really stunning visualizations. But the learning curve is really steep and building maintainable charts is actually really difficult. It can take days to get something simple working the way you want it and it can also become a real pain to debug things which seem simple on the surface. When I learnt D3, I kind of felt like Neo. One day I woke up and I was like, I know Kung Fu of the SVG world. And you know, Tom Dale neglected to mention something yesterday that we actually have an army of Thomsters on the outside of the matrix who do know Kung Fu and that's how we power Glimmer 2. The creator of D3, Mike Boestock, has spent the last year or so working on the next version of D3 which is version four. And in version four he's wrapped up a lot of the common behaviors that he's discovered over the many years of building D3 and put them into a new library called D3Shape which he describes as a small JavaScript library for drawing geometric shapes commonly found in data visualizations. It's specifically designed for working with frameworks that have their own DOM abstractions such as Ember. It includes a lot of very useful primitives. For example, this simple linear line but also more complicated lines like this catmal-rom curve which is designed such that it avoids intersections and cusps. By the way you can demo this live at ec16.tomster.io. It also includes some really complicated graphics like this donut slice with rounded corners and padding that preserves relative area and parallel edges between adjacent slices. That's a real challenge to implement from scratch. But rarely will you find something that lets you express those properties so easily as D3Shape. And remember, a donut is just a pie that somebody ate the middle of. The same applies for graphics. And I'll put together a little add-on that actually loads D3Shape and all of the dependent D3 version four libraries which you can use in Ember today with Ember CLI D3Shape. It also includes some, well, I should say, it works exactly as it says on the tin if that tin is the GitHub readme. Here's an example where we generate the paths for each slice of a donut chart using the arc and pie functions. I hope that's big enough that you can see. Hopefully. They told me to crank up the font. So if we were to take the output of this it will generate a path data string which will render something like this. Very simply. One more useful example in statistical graphics is you often need to calculate things like percentiles. D3Array has a bunch of very useful features for this. This is how you generate the 95th percentile of an array of numbers. It also includes a lot of other useful statistical functions, finding the mean, the median, the mean and max and the extent of the data ranges which are very commonly used when constructing presentations using D3. Data visualization is really just stories about data. So I'd like to present a story about some data that we have that we've taken from one of our customers from a test they ran last December. In this dataset we have a bunch of series which represent metrics that we collected while a load test was running. And these are the most common ones you will look for when you're trying to diagnose how the test went. So we'll look at things like response time, concurrency and transaction rate for both past and failed requests. So we'll start by laying out the response time. We'll plot this out as a line chart. And there's not really much we can say from this. There's really no scientific explanation we can really draw from this that's incredibly useful at all. All we can say is that it climbs at the beginning of plateaus and then it drops off and kind of tapers to a flat line. But if we were to lay out the concurrency curve of this we see something interesting happens. This is telling us that as our number of concurrent connections increased we reached a point where our application for some unknown reason became faster. Which doesn't really bear any correlation to any software that I've ever built. So to find out why that happened we have to look at the two other datasets which was the past and failed transaction rates. We can see that the green line along the bottom representing the past transactions it's pretty steady doing it about 8,000 requests per minute. I should have put a y-axis on there but take it from me, it's 8,000 requests per minute. But something interesting happens at the point that we see the response time drop we begin to see the error rate increase pretty rapidly almost in line with the number of concurrent connections. And this gives us an interesting insight which after digging deeper into the data we discovered that what was happening was the load balancer was throwing off errors basically throttling the connection. So our application that it was proxying to was still getting a nice steady throughput of 8,000 requests per minute and serving those. But the load balancer itself was saying well 100,000 requests I can't handle that so I'm just gonna return errors and it can return error a lot faster than it can proxy request to our app. Thus you see the response time drop throughput goes up and that explains what's going on. Train timetables are an interesting thing to study if for no other reason than the many ways that you could possibly visualize them. This is the CalTrain timetable from San Francisco. It looks exactly like every other train timetable or bus timetable developed by a bureaucratic organization devoid of outside thinking. This is also a train timetable which kind of looks like a broken window.  This was designed by E.J. Mare in France in the 1800s. Now I find this really interesting because when I first looked at it I had absolutely no understanding of what it meant. But let me explain it to you. On the left-hand axes we have all the stations from Paris to Lyon, France. Separated by distance proportionally. On the X-axis on the top and bottom we have the time of day from six a.m. to day until six a.m. tomorrow. With lines representing each 10 minutes of the hour between each of those hours. All the other lines on the screen represent trains. Such that a train leaving Paris at the top left, you can see when it stops at a station it's a horizontal line. The faster it's going is the more vertical line. It's such that you can track what station it's gonna be at what time. Lines going the opposite direction obviously trains returning from Lyon to France. This is what happens when we apply the same string down chart to the Caltrain timetable. Here we've made a few additions. We've encoded the 100 local trains as black which are the slow ones. The 200 limited express trains as the orange lines which I don't know if you can differentiate, hopefully you can. And the red are the baby bullet trains which are the express trains. So if we track a line for example from 6.55 in the morning we can see that it gets into San Jose at about 7.45. Whereas the train that left at something like 5.30 on the 100 line only gets in about the same time. I think with a bit of interaction this could actually be a really nice timetable to use. The important thing to remember here is that the correct representation doesn't matter as much as the accuracy of the visualization. What I mean by this is that you have a lot of artistic control over the presentation including whether you not use lines or areas or stack layouts and so forth. But none of this really matters if your data isn't right. An example of data that isn't correct is for example here when 110% of Scotland voted or this chart which yes it does show you that gas used to be expensive but also neglects to include a linear scale on the X axis such that it communicates that last year, last week and today are all equidistant in time. I mean admittedly this isn't the most obvious error but it does require the audience to think a little bit harder which was doubtfully a goal of Fox News. Hollywood level artistic license over your presentation like this will only ever yield an exaggeration of the data which doesn't match reality much like any film that Vin Diesel's ever been in. Doesn't even break the window. When telling a story with data especially when using data as a presentation sorry you can't exaggerate the presentation without throwing disregard to the data. This is why you need precise tooling to preserve the accuracy of your presentation. And now if we just recap for a moment we talked about storytelling aspects of charts. As a story advanced so did our charts slightly. Both of these charts that I showed you are both line charts. We can actually construct these from the exact same building blocks. They're both lines, they both contain similar axes just different data but the only difference is that if we were to break this down into components we'll just require a different level of customization for each one. So we're going to build a line chart starting with a fresh Ember app which I've called floodgate because well naming's hard. In the grammar of graphics Wilkinson breaks down the core components of a visualization into a specification which can be used to reproduce the visualization accurately by any presentation software which follows the specification. While I'm not going to focus on the mechanics of how this works I'd like to borrow the six layers of the specification that fit appropriately to the way we build visualizations in Ember. So I'm gonna lay out these next to the typical data flow we see in an Ember application and we're going to walk through each one of these. So starting at the top with data we all know that when we enter a route we can make a request for a data source and this is a really good place to start with any statistical data we might load in. And this sort of data could be empirical data such as events observed in the real world or abstract data such as data that's been generated using a modeling function or metadata which is data about data. Loading data is obviously really straightforward for anyone who is relatively familiar with how Ember routes work. Excuse me. In this example we're using Ember network we're gonna make a request to our metrics API and we're simply going to set the result of that on our controller as the metrics property which leads us kind of to the next point which is our raw data from our metrics API isn't what we want to visualize so we need to do some transformations to it. Essentially we want to go from this array of objects representing our raw output from influx into just the values we care about for our visualization which is timestamp and value for each dimension. Converting our raw data to this is really simple with a computed map. Like so. You'll notice that here we don't use any Ember get because we're just dealing with raw objects. Just a couple things to note. Loading statistical data with Ember data does not work. You're gonna have a really hard time with that because it will try to convert every single dimension to an Ember object which is incredibly expensive so it's much better to work with just plain old JavaScript objects. So the next step is really when we start to put this together. Now typically we'll construct a chart component to encapsulate the responsibilities of our visualization which need to include things like a scaling function which will handle our abstract data and convert that to something which can be presented on the screen that fits within the screen's coordinates. And a scaling function essentially works like this. So if we have an input domain of say 1200 to 4000 which is the range of our observed values in the real world to our screen which is zero to 500 pixels, a scaling function will essentially create a map between that so 1500 converts to 54 pixels. Now D3 comes with many different types of scales, my favorite of which are the color scales because they're incredibly useful for encoding different graphical markings based on value. And color scales only require an input domain so you can just scale them to the width of your data set and then call a value on it and it will emit a hex value color string that you can use anywhere in your visualization. They're really cool. D3 obviously comes with many other scaling functions in the D3 scale package for handling things like continuous data and discrete data. It's included in the add-on that I mentioned earlier so you can literally just require import scale linear from D3 scale in your Ember app and it will work. So inside of our component which will encapsulate the visualization, we need to pull a few things apart. So the first thing is we need to pull out the X values and the Y values which we can do that very easily just with another computed map. Like I showed you earlier, that's our data that we're passing into our component is just an array of two-dimensional arrays of timestamp and value. We then need to figure out what the domain of that data is which is basically the minimum and maximum values. Which we can do that with a computed extent utility function that I've written which I've put the code up on GitHub for. And we'll do the same with the range as well. So we're gonna pull out the width of our plot and basically say after margins we've got this much room left and that will be the range I suppose that we're going to output our visualization to. And then we'll just put together two very simple computer properties which will on our X scale use a time scale. Time scale is just a linear scale which converts numbers to date objects and handles things like leap years automatically. And we'll use a simple linear scale on the X axis. The next layer of our visualization is what's I guess referred to as the coordinate layer which is responsible for the output of our presentation. And at this point I've really just shown you a bunch of boilerplate. So I'd like to wrap up the next behavior into an add-on so we can move along a little bit faster. Now, often the hardest part of releasing an add-on is coming up with a name. And I often use really abstract hipster sounding names and sometimes German words that sound cool in English like cartograph, Einhorn and Feuerzeuge. Unfortunately my German is terrible so if yours is anywhere near as bad as mine is writing these words down can be quite troublesome for anyone using your add-on. So when all the popular hipster words like moustache and handlebars are taken I wish I could give you one amazing tip that will help you name everything in the future but I'm not linked bait. So what I'm gonna do instead is share you another story. If anyone who knows me from the times that I've been to New York and San Francisco and Portland and Melbourne I often wear a lot of plaid and it's kind of like the necessary urban camouflage when you're six foot six and you're hanging out in Williamsburg. And this was especially true last October when I was in Williamsburg and my friend Jessica actually lost me in the crowd of other people wearing plaid. So naturally I'm going to call my add-on maximum plaid. It's also partly another Tesla announcing a speed motor to the next roadster above ludicrous mode and a nod to space balls I suppose. Maximum plaid is a new Ember specific graphing library built on D3 shape designed for expressiveness and efficiency. This is how you use it to generate a simple line. Works like for example we have a component which wraps the line primitive in D3 shape. I've included a lot of extra options in the API example here but essentially it'll output a group tag with a path tag inside of it which if you were to render that snippet there you would get that blue line. That's not very fun to use. It's kind of a little bit cumbersome as an API and I think the Ember can do a lot better than this. So I put together a plot component which uses contextual components to abstract away a lot of the private APIs that you don't really have to care about. So you can get started very quickly with nothing other than values. Can I get a raise of hands? Who uses contextual components in their app? Oh, all right. Six people. So for those of you who aren't familiar with contextual components you can put them together using the hash helper. And what they do is allow you to return a yielded object that has partially constructed components inside of it using the component helper such that I can call plot.line or plot.symbol and it will return the result of this component pre-filled with all of the inputs that I don't have to remember how to specify each time. Of course, it's a partial component so you can override any of these properties as you want. So that's kind of a primer. Another example, if we wanted to draw a line and put a marker, in this case a four pixel wide circle above each point, this is how we would do it. I've created a plot scatter component which yields the each dimension with its X and Y coordinates on the plot for you. So you can put anything inside of there and it'll draw a marker somewhat like this. I'm not sure if you can see the black dots there, they're pretty small. But as a live example you can go to on your laptop. Or perhaps we might want to change the curve interpolation to be a step after function so we get this nice eight bit look that preserves the drop in monotonicity and so forth. So maximum plaid is a work in progress. I started writing it last week instead of working on my talk. We're going to move a lot of the logic we have in our own application to this. And it's kind of like a bit of a beginning. But so far here's what we've implemented. We can track this on GitHub if it interests you. There's a lot of future work to be done. But sort of just like any complex system that works was invariably built out of a simpler system that worked. You need to remember that all grand visualizations are all built out of small building blocks. So to summarize, routes make an ideal place to load visualization data. Controllers can easily be used to transform data into the ideal shape. And a custom component to a encapsulate your visualization can compose all the primitives needed to build complex ambitious visualizations using Ember. Because I believe that all sufficiently ambitious applications will eventually require data visualization. This is only a start. I'd like to stop treating visualization as an afterthought in Ember and make it a first-class citizen. If you're working with D3 or another visualization add-on within Ember, or you're an author of one of the other visualization add-ons in Ember, I'd really like to talk to you and share your thoughts on this and see if we can maybe work together to build a proper ecosystem around visualization in Ember, both for people building applications that need this and also for efficiently and expressively putting together data visualizations. Thank you so much for coming along. It really means a lot to me that you all came out this morning. Again, my name is Ivan. I'm a very approachable guy, so please find me the crowd. Come and say hello or get a mate. And you can find the code up on GitHub and my slides and so forth at ec16.tomsa.io. And I'm Ivan on the Ember community Slack. Thank you.