Everyone Preston Van Dyke with SEO com today, i’m answering what are the best backlink analysis tools. First, of course our Google and Bing Webmaster centers those are great for utilizing, also open, site Explorer and particularly for open site Explorer. I really like the how actionable that tool is for SEO purposes. That’s that’s why it’s so great and then also majestic SEO has a great backlink analysis tool for majestic. I love the detail and comprehensiveness there.
Okay, let’s sudden my name is Ricardo and together with a current in, I will be talking about the future of 3d graphics on the web. But before we do that, let’s have a quick look at the past and the present WebGL landed in browsers in February 2011.
That was in chrome, 9 and Firefox. 4 were the first ones. Those words those rosters were the first ones who implemented back. Then the Google, with the Google query, lab we created a interactive music article that aimed to showcase the new powers the technology was bringing to the world. It was a pretty big project in between creators, directors, concept, artists, animators around 100 people work on the on the project for half a year, and ten of us were JavaScript graphics developers.
We knew the workflow and tools were very different compared to traditional web development. So we also made the project open source, so others could use it as reference. Some years later, Internet Explorer an H and Safari implemented WebGL 2, which means that today the same experience works in all major browsers in desktops and tablets and phones too. What I find most remarkable is the fact that we don’t have to modify the code for that to happen.
Anyone anyone with experience, doing graphics, programming like knows that this is this is rarely the case. Usually we had to recompile the project every every couple of years when operating systems updates or like new devices appear. So it’s a quick recap just start with checking WebGL is a JavaScript API that prove it’s binding to OpenGL. It allows web developers to utilize the users, graphic users, graphics card in order to create a efficient and performant graphics on the web.
It is a low-level API, which means that it is very powerful, but it’s also very verbose. For example, a graphics cards main primitive is a it’s a triangle. Everything is done with triangles here’s the code that we’re going to need to write an order in order to display just just one triangle. First, we need to create a canvas element. Then, whichever skill we get the context for that canvas and then, since things get pretty complicated like pretty fast like after defining positions for each vertex, we have to add them to a buffer.
Send it to the GPU, then link link the vertex and fragment shaders, compile a program that will you will be used in from the graphics card to how to fill those pixels. So that’s why a bunch of us back then like started creating libraries and frameworks to that abstract, all that complexities, so so developers and ourselves cool, stay, productive and focus those libraries take care of placing objects in 3d space material configuration is loading 2d and 3d assets.
Interaction sounds etc, like anything for doing any and you sort of like game on application, there’s only designing those libraries takes time, but over the years people have been doing like free amazing projects with them. So let’s have a look at what people are doing today, so people are still doing interactive music articles – that’s good, in fact like in this example, track by little workshop, not only works on desktop mobile, but it also works on VR devices, letting you look around while Chopping through like glowing tunnels, another clear use of the technology is gaming.
Home is a beautiful game developed by a super surprisingly small team and was released last year last year’s Christmas experiments. Another one is a web experiences in this case out. The goat is an interactive animated, storybook designed to teach children about bullying and the guys that the folks at assembly used my to model on rican animates those characters and then export it to gltf via blender for rendering they use fridges and they brought like 13 13 Thousand lines of typescript to make the whole thing work, and yet another very common use is a product configurators.
The guys are like a little workshop again show how good this can look in this demo click, but those those cases are not and they’re like what people are doing. Like data visualizations, enhancing newspaper articles, virtual tours, documentaries, movie promotions and more like you can check, you can check the 3js webster than the babylon Jet Set to see more of those examples. Alright, we don’t want to.
We don’t want to end up like in a world where the only HTML elements in your page is just a combat stack in the script tag. Instead, we must find like a ways of combining WebGL on an HTML, so the good news is the laylee. We have been like seeing more and more projects and examples of web designers utilizing bits of WebGL to enhance their HTML pages. Here’s a site that welcomes the user with a beautiful immersive image, we’re able to interact with the 3d scene by moving the mouse around the image.
But after strong the page, then we reach like traditional a static layout with all the information about the product as we as traditional web sites. Usually look like the personal portfolio. Bertrand Candice shows a set of developments affecting the dynamic background, a bit dark with JavaScript. We can figure out the position of those deep elements and then we can use that information to affect the physical simulation that happens on this 3d scene.
On the background, but like for under power devices, we can just replace that WebGL scene with the static image and the websites so functional. Another interesting trend we have been seeing is the websites that use distortion effects. The worst for Japanese director of terajima has a very impressive use of them. However, the content is actually plane and selectable HTML, so it is surprising because, as you know like, we cannot do these kind of effects with CSS.
So if we look look at it again, what I believe that they were doing is like the edges copying they they had the Dom elements that they’re copying the pixels all those elements into the background of WebGL canvas. Then they hide the Dom element that they apply. The distortion – this is the finish, the transition and they put the next Dom on top, so it’s still something that you can enable/disable depending on there if it’s small, it also works on mobile some of the things, but something that you can progressively enhance one more example To set for this side applies the social effect on top of the HTML, basically making the layout like like truly fluid, then again like this is something surprising because with the may be possible with CSS.
So I think those are all great examples of the kind of results you can get by mixing HTML and WebGL, but it still requires the developer to diving into JavaScript and that you know, as we know, can be a little bit tedious to connect all the parts. If you’re more used to react this new library web poll Henschel, I can be a great option for you. React 3 fibre mixes react concepts on top of three years abstraction so that, like here’s, the code that for the animation that which is so notice how the like critters will define effect and content components easily composed into the canvas it makes it much more reusable and Easy much and easy to maintain.
However, I think that we can still make even simpler, enter web components. I believe, where components will allow us to finally bring bring all the power of WebGL right into the HTML layer. We can now encapsulate all those effects in composable custom elements and hide all the code complexity so, for example, here’s another project that we did for the WebGL lunch eight years ago. It was kind of a globe platform.
It was a like a project that allow JavaScript developers to visualize different data sets on top of the globe. You will have the library you have your data and then you are to trade like use different, like money to use the different parts of the data to display. But even if we try to hide the WebGL code, developers still had to write custom JavaScript for loading. The data and configure the globe and append it to the DOM and the worst part was like the boroughs will still have to handle the positioning of the Dom object and the reciting and I did was use difficult to like mix it with like a normal HTML Page so today, with web components, we can simplify all that code.
We use those two lines. The developer only has to include JavaScript library on the website and a powerful custom element is now available to place whenever whenever they need in the Dom, I’m not only that alike. But at that point I duplicated a line with by duplicate by duplicating the line that you can have like multiple Globes before it will never have to. You know duplicate all the code and it will be again how there’s are like more code to read and parse a component that is already ready to use the previous one is not ready.
Yet this one model Bureau is really ready and for this one basically, we wanted to do that. The problem is that displaying 3d models on the web still pretty hard, so we really wanted to make it this as simple as like, embedding like an image in your page like a simple as adding like an image tag. So that’s me, that’s a main goal for this one again, the developer only has to include a JavaScript library and then and then like a powerful.
This custom element is ready to display, like any 3d 3d models were using the gltf open standard. An important feature of HTML tags is accessibility for low vision and blind users. We’re trying to inform them on both the 3d model, like what the 3d model is and also orientation of the model. Here you can see that the view angle is being communicated verbally to the user, so they can be oriented with what’s going on and also it prompts the for how to control the model with keyboard, and I see an easy exit back to the rest of the Page, the mala paper also supports air like a mental reality, and this you can see how it’s being it’s also really being used on the nasa website so use by adding the a RI attributes.
It’s going to be able it’s going to show an icon and it’s going to be able to launch the a or b word for both on Android and iOS for iOS. You have to include the u.S. DC file and, lastly, while building the component, we realized that, depending on the device, you can only have up to 8 WebGL context at once. So if you create a new one, the first one disappears. It is actually like a well-known a limitation of WebGL bit lots of good practice.
You only have one context for keeping memory in one place. The best solution that we found for this was creating a single WebGL context on off-screen, so like it’s hidden and then we use we use that one to render all the model. We were elements on the page. We also like utilize, the interesting observer to make sure that we are not rendering objects that not are not in BO and also recites observer too, whenever detecting, if the, if the developer is modifying the size we render we have to, but we all know how the Web is sooner than later, someone we want to display hundreds of those components and ones, and that is great.
We want to allow for that. But for that we’ll need to make sure that the underlying API is or as efficient as possible. So, for that now, quarantine is going to share with us what’s coming up in the future. Thank you. Okay! Thank you, Ricardo. This was an amazing display of what’s possible on the web using GPUs today. So now I’ll give a sneak peak of what’s coming up next. In the future, where you’ll be able to extract even more computational power from GPUs on the web, so hey everyone, I’m Colton Velez, and for the last two years at Google, I’ve been working on an emerging web standard called web GPU in collaboration with all the major Browsers at w3c, so web GPU is a new API, that’s the successor to WebGL and it will unlock the potential of GPUs on the web.
So now you’ll be asking go Anton. We already have WebGL. So why are you making a new API? The high level reason for this is that WebGL is based on an understanding of GPUs as they we’re 12 years ago and in 12 years GPU hardware has evolved, but also the way we use GPU hardware has evolved. So there is a new generation of GPU. Api is native, for example, Vulcan that helped do more with GPUs and web GPU is built to close the gap with what’s possible in native today, so it will improve what’s possible on the web for game developers, but not only it also improve what you can do In visualization in heavy design, applications for machine learning, practitioners and much more so for the rest of the session, I’ll be going through specific advantages or things that web GPU improves over WebGL and show how it will help build better experiences.
So, first web GPU is still a low level and verbose API so that you can tailor usage of a GPU to exactly what your application needs. This is the triangle Ricardo just showed and as a reminder, if this was the code to render this that triangle in WebGL now this is the minimum web GPU code to render it the same triangle. As we can see, the complexity is similar to WebGL, but you don’t need to worry about it, because, if you’re using a framework like three or Babylon, then you’ll get the benefits transparently for free when the framework updates to support what GPU.
So the first limitation. For that WebGL frameworks run into is the number of elements or objects they can draw it frame, because each drawing command has a fixed cost and needs to be done individually, each frame so with WebGL and optimized. The application can do a maximum, a thousand objects per frame and that’s kind of already pushing it, because, if you’re on, if you want to target a variety of mobile devices and desktop devices, you might need to go even lower than this.
So this is a photo of a living room. It’s not rendered it’s an actual photo, but the idea is that it’s super stylish, but it feels empty and cold. Nobody lives there, and this is sometimes what it feels looking at WebGL experiences, because they can like complexity. In comparison, game developers in native or on consoles are used to, I don’t know, maybe 10,000 objects per frame if they need to, and so they can build richer, more complex, more lifelike experiences, and this is a huge difference, even with the limitation in the number of Objects, WebGL developers have been able to build incredible things and so imagine what they could do if they could render it as many objects.
So Babylon genius is another very popular 3d JavaScript framework and just last month when they heard we were starting to implement web GPU. They’re, like hey, can we get? Can we get some web GPU now and we’re like? No, it’s not ready like it’s, not in Chrome, but here’s a custom build and the demo I’m going to show is what they came back to us with just two days ago. So can we switch to the demo, please all right, so this is a complex scene rendered with WebGL and it tries to replicate what a more complete game would do if every object was drawn independently and a bit differently, so it doesn’t look like it, but all The trees and rocks and all that there are independent objects and could be different objects, so in the corner in the top left top right corner, there’s the performance numbers and we can see that as we zoom out and we see more objects.
The performance starts. Dropping heavily and that’s because of the relatively high fixed cost of drawing each object of sending the command to draw each object, and so the bottleneck here is not the power of the GPU on this machine or anything like that. It’s just JavaScript iterating through every object and sending the command. Now, let’s look at an initial version of the same demo in Webb GPU and keep in mind.
This was done in just two weeks. So, as the demo as the scene zooms out, we can see that the performance stays exactly the same. Even if there’s more objects to draw and what’s more, we can see that the CPU time of JavaScript is basically nothing. So we are able to use more of the GPU power GPUs power because we’re not bottlenecked on JavaScript, and we also have more time on the CPU to run our applications logic.
So, let’s go back to the slides. What we have seen is that, for this specific and early demo, web CPU is able to submit three times more drawing commands in WebGL and leave his room for your applications. Logic I made Renu a major new version of babylons. A yes Babylon’s is 4.0 was released. Just last week, and now today, the WebGL, the Babylon Jazz developers, are so excited about what GPU that they are going to implement full support for web GPU.
For the initial version of what GPU in the next version of Babylon is that blonde J is 4.1. But what GPU is not just about drawing more and more complex scenes with more objects, a common operation done on GPUs are say: post-processing image filters, for example, def depth-of-field simulation. We see this all the time in cinema and photography, for example, this photo of the fish. We can see the fish is in focus while the background is out of focus, and this is really important because it gives the feeling that the fish is lost in a giant environment.
So this type of effect is important in all kinds of rendering. So we can get a better cinematic experience, but it’s also used in other places like camera applications and of course this is one type of post-processing filter, but there’s many other cases of post-processing filters. Like I don’t know, color grading image sharpening a bunch more and all of them can be accelerated using the GPU. So, for example, the image on the Left could be the background behind the fish.
If, before we apply the depth of field and on the right, we see, the resulting color of the pixel what’s interesting is that the color of the pixel depends only on the color of a small neighborhood in the original image in a small neighborhood of the pixel. In the original image, so imagine the grid on the left is a neighborhood of original pixels. We’re going to number them in 2d, and the resulting color will be essentially a weighted average of all these pixels.
Another way to look at it is to see that, on top we have the output image and each of the the color of each of the output pixels will depend only on the 5×5 stencil of the input image on the bottom. The killer feature of a GPU, in my mind, is what we call GPU compute, and one use case of GPU compute is to speed up local image filters like we just saw, and so this is going to be pretty far from Dom manipulation.
I would like react, or like amazing web features, like course headers. So please bear with me we’re going to go through it in three steps. First, we’ll look at how GPUs are architectures and how an image filter in WebGL uses that architecture and then we’ll see how web GPU takes better advantage of the architecture to do the same image filter but faster. So let’s look at how a GPU works – and I have one here so this is a package you can buy in stores.
And can you see it? Oh yes! So this is a package you can buy in stores and the huge heatsink. But if we see inside there’s this small chip here – and this is the actual GPU, so if we go back to the slides, this is what we call a die shot, which is a transistor level picture of the GPU. And we see a bunch of repeating patterns in it, so we’re going to call them execution units. These execution units are a bit like cores and CPUs in that they can run in parallel and process different workloads independently.
If we zoom in even more in one of these execution units, this is what we see. So we have in the middle a control unit which is responsible for choosing the next instruction like, for example, add two registers or load something from main memory, and once it has chosen an instruction, it will send it to all the alias. The ALUs are the arithmetic and logic units and when they receive an instruction, they perform it.
So, for example, if they need to add two registers, they will look at their respective registers and add them together. What’s important to see is that a single instruction from the control unit will be executed at the same time by all the ALUs just on different data, because they all have their own registers. So this is single instruction, multiple data processing, so this is the part of the execution unit that is accessible from WebGL, and what we see is that it’s not possible for L used to talk to one another.
They will have no ways to communicate, but in practice, GPUs look more like this. Today there is a new shared memory region in each of the execution units where I’ll use our can share data with one another. So it’s a bit like a memory cache in that it’s much cheaper to access than the Jemaine GPU memory, but you can program it directly explicitly and have a use shared memory there. So a big benefit of GPU compute is to give developers access to that shared memory region.
This was the architectures of GPUs and their execution needs. So now we’re going to look at how the image filter in WebGL maps to that architecture. For reminder, this was our the algorithm we’re going to look at and in our example, since our execution units has 16 a I’ll use, we’re going to compute a 4 by 4 block, which is 16 pixels of the output in parallel, and each ALU will take care Of computing, the value for one output pixel – and this is GPU pseudocode for the filter in WebGL – and essentially it’s just a two de loop on X & Y, that fetches from the input and computes the weighted average of the input pixels.
What’s interesting here is the coordinates. Argument to the function is a bit special because it’s going to be pre-populated for each of the ALUs and it’s what will make it that’s what will make that they’ll use each to the execution on different data because they start populated with different data. So this is a table for the execution of the program, and likewise we can see the coordinates are pre-populated.
So each column is the registers for one of the ALUs and we have 16 of them for the 16 ail use. So the first thing that happens is that the control you need says, hey, initialize, some to 0, so all of them initialize the sum to 0, and then we get to the first iteration of the loop in X and each ALU gets its own value for X. Likewise, it’s edges, h-hell, u gets its own value for y and now we get to the line that does the memory load of a value of the input.
So each ALU has a different value of x and y in their registers, and so each of them will be doing a memory load to a different location of the input. Let’s look at this register at this ALU. It’s going to do a memory load at position. Minus 2 minus 1 we’re going to get back to this one. So if we go and do an audit or iteration of the loop in Y. Likewise, we have data while register and we do a memory load.
What’s interesting here is that the first ALU will do a memory load in minus 2 minus 1. That’s a redundant load because we already did it at the nest at the last iteration anyways. The loop keeps on looping and there’s more loading and summing and all that that happens and in the end we get to the return, and that means the output. The sum will get written to the output pixel and the computation for a 4 by 4 block is finished.
Overall, the execution of WebGL on the you of the algorithm in WebGL for a 4 by 4 block did 400 memory loads. The reason for this is, we have 16 pixels in each of them. Each of them did 25. So now this was how the filter executes in WebGL we’re going to look at how web GPU uses the shared memory to make it more efficient. So we take the same shader the same program as before, so it’s the exact same code and we’re going to optimize it with shared memory.
So we introduced a cache. That’s going to load! That’s going to contain all the pixels of the input that we need to do the computation. This cache is going to be in shared memory so that it’s cheaper to access than the actual input. It’s like a global variable, that’s inside the execution unit. Of course, we need to modify the shader to use that input tile and because input tile needs to contain values at the beginning.
We can’t just start like this, so this is this function. It’s going to be a helper function that computes the value of the pixel and we’re going to have a real main function that first go plates the cache and then calls the computation. So like the previous version of the shader, the coordinates are pre-populated. So each of the I’ll use does a different execution and then all the L users work together to populate the cache and there is a bunch of loops and whatnots there.
But it’s not really important. So, as we use this what’s interesting to see is that only 64 pixels of the input are loaded and put in the cache. There is no redundant memory loads. Then we go through the main computation of the value, and likewise this is very similar to what happened before, but on this line, the memory load is now from the shared memory instead of the main memory – and this is cheaper.
So, overall, thanks to the caching of a tile of the input, the web GPU version didn’t do any redundant main memory load. So for a 4 by 4 block it did 64 memory loads and, like we saw before what GL had to do 400. So this looks very, very biased in favor of web GPU, but in practice things are a bit more mixed, because web GPU did didn’t do main memory loads, but it did a bunch of shared memory loads and it’s still not free and also WebGL, is a bit More efficient than this, because GPUs have a memory, cache hierarchy, and so some of these memory loads will have hit the cache that’s inside the execution unit.
But the point being overall web GPU will be more efficient because we explicitly are able to cache input data. So the code we just talked about in the graphics world, it’s called an image filtering. But if we look at the machine learning world, it’s called a convolution or a convolution operator, all the optimizations we talked about. They also apply to convolutional neural networks, also known as CNN’s, so the basic ideas for CNN’s were introduced in the late 80s, but back then it was just too expensive to train and run the models to produce the results we have today.
The ml boom of the last decade became possible because CNN’s and other types of models could run efficiently on GPUs in part, thanks to the optimization we just saw. So we are confident that machine learning web frameworks such as tensorflow JS, will be able to take advantage of GPUs to significantly improve the speed of their algorithms. Finally, algorithms can be really difficult to write on GPUs in WebGL and sometimes sometimes there’s just not possible to write at all.
The problem is that in WebGL, where the output of computation goes is really really constrained. On the other hand, GPU compute that web GPU has is much more flexible because each ALU can read and write memory in at any place in the GPU memory. This unlocks a whole new class of GPU algorithms from physics and particle based fluid simulation, like we see here, two parallel sorting on the GPU mesh skinning and much much many many more algorithms that can be offloaded from JavaScript to the GPU.
So, to summarize, the key benefits of web GPU are that you can have increasing complexity for just better and more engaging experiences, and this is what we have seen with babylons is it provides performance, improvements for scientific computing, like machine learning and it unlocks a whole new Class of algorithms that you can upload from JSC PU time to run on a GPU in parallel, so now you’re like hey, I want to try this API you’re.
In luck. The web GPU group at the web, CPU is a group effort and everyone is on board. The Chrome Firefox edge, Safari they’re, all all starting to implement the API today, we’re making an initial version of a GPU available on Chrome Canary on Mac, OS and other operating system will follow shortly to try it. You just need to download Chrome Canary on Mac OS and enable the experimental, Schlag and safe web GPU and again this is an unsafe lag.
So please don’t browse the internet with it. On for your daily browsing, more information about about web GPU is a valid available on web GP, dot io. So there’s the status of implementations, there’s link to some samples and demos, a link to a forum where you can discuss web GPUs and we’re going to add more stuff to this. With articles to get started and and all that, what we’d love is for you to try the API and give us feedback on what the pain points are, what you’d like the thing to do for you, but also what’s going great and what you would like about It so thank you, everyone for coming to this session Ricardo and I will be at the web, send box for the next hour or so.
In the example you’re seeing, I know, I’ve sent out an email campaign and I want to know out of all the people. Who’ve come to the website how many people came via the email that I sent out. So the first thing to do is: go to Google go to the Google URL builder.
This tool will allow us to tag URLs in a way that we can find this answer. The URL is a bit strange, but don’t worry about that. So I’m just going to google com, you go at the right place, bring my website URL! There’s three fields you have to fill in, which is source medium and name. I’r going to use magazine, email launched for the source, the medium will be email and a campaign name is logo. Introducing people to our new logo, click generate the URL and it generates you a URL with all the bits that it needs to be able to track.
Clicks on the link, so i’m going to in the next article, show you how to go and find this data within google analytics. What you’d need to do now is take this URL and be using it in the email that you send out. You
We are here to talk to you about Linux, for Chrome box, also known as crostini. We will start by introducing ourselves. My name is Sudan. I am a designer on crostini for Chromebooks hi, I’m Dylan, I’m the Chrome, OS virtualization lead and I’m Tom product manager for Linux on Chromebooks. Now it’s the end of day two at i/o and you’ve probably already been to a bunch of different sessions that have talked about all the new frameworks that you need to be using or the platforms that you need to be building for and everyone’s right.
You absolutely should be, but we’re not really here to talk about that. Instead, what we want to talk about is you as developers and how you can get more peace of mind by using Linux on Chromebooks, we give you that peace of mind by balancing simplicity and security. On that note, let’s do a quick user study. How many of you are developers in the audience? Wow, that’s full room as expected. Keep your hands raised, how many of you use your computers for anything else, other than development like doing your taxes, checking email, again, 100 % of you, okay, one last question: how many of you are worried about security? Good, that’s pretty! I mean you all should be so I’m glad to see many hands up anyway, so I don’t know about you, but when I start a new project I I get stuck a lot right.
I hit a lot of walls and I hit a lot of barriers and go to look for a problem, go to look for a solution and I turn to Google. Luckily, Google’s almost always got a great answer for me. Unluckily. Sometimes the answer looks like this, and I know I shouldn’t run this script from evil site, comm and pipe it to soo do. But you know that deadlines coming up. This may be, the site, looks kind of legit, so in this case I’ll make an exception and I’ll do this and then it happens again and again and eventually I end up with a system that I don’t trust as much as I should, because I don’t really Know what code I’ve run on it anymore? I don’t have time to read all these scripts.
My solution to this has been to carry two laptops, one for my developer world and one for my everything else world that I want to be secure in, but recently I switched to using one laptop and Tom’s going to talk about how I do that. So our goal with Chrome OS has been to give you a simple and secure experience from the start, but if you tried it previously, you might have seen that it wasn’t quite ready for developers in order to be simple and secure.
We couldn’t run all of the tools that developers need to get their job done, but that all changed at i/o. Last year, when we announced that we were going to start supporting Linux on Chromebooks Linux on Chromebooks lets, you run all of your favorite editors, IDs and tools, and it’s now supported on over 50 % of Chromebooks, including great devices with eighth generation. Intel CPUs like the Lenovo yoga book C 630 and the Acer Chromebook spin 13.
If you haven’t seen it we’re going to run through a few examples. First off, how do you get it? It’s really easy! It’s just a couple clicks now. In the background, this is downloading a virtual machine setting up containers configuring, it all Dylan’s, going to go more into that in a few minutes. But for you as a developer, it’s just a couple clicks to get started and this adds a terminal to your launcher.
Now, if you open that terminal, you’ll see that you have a pretty standard, debian environment and we’ve already loaded in a bunch of the tools that developers expect like git and vim. And if you need anything else, you have the apt package manager and you can install whatever packages you need and if you want to, instead install files or install programs via dev files, you can do that too. This gives you access to thousands of world-class developer tools.
Now, once you’ve installed, any graphical you’ll find that they all show up in your launcher, just like the rest of your Chrome, OS apps, and if you open them, they show up in your window manager again just like the rest of your Chrome, OS apps. This is the simple experience that people have come to expect from Chrome OS and we didn’t want to change that with Linux. But importantly, this is also secure.
You don’t have to worry about malware, accessing your files, snooping on your traffic or infecting your peripherals. I’d ask you to trust us on that, but this is way too important for you to take on Trust alone. So over the course of this talk, Dylan and Sudha are going to walk you through the principles behind the architecture and design of crostini. We’re then, going to dissect some common developer flows to show you how these principles apply and, finally, we’re going to share some tips and tricks for advanced usage for the power users out there.
So now I’m going to hand it over to Dylan to talk about the architecture. Okay, so Chrome OS has always had a layered approach to security, and our big layer has always been the browser and the renderer and running all untrusted code in a nice, isolated renderer, and that keeps the attack surface of your core system to an absolute minimum. They’re not allowed to make a lot of system calls, they can’t poke at random bits of your kernel and that worked really well for webpages web apps.
However, for developer tools, I need to install a lot of different programs. They need a lot of different privileges. They can do anything any app on Linux can do and that wasn’t acceptable for us on the core of Chrome OS. So we need that a layer, so we added a virtualization layer and that lives in the main, Chrome OS layer and that spins up a VM. And now this VM has a much more limited interface, while still exposing a full Linux kernel to the programs that run inside the VM.
The only way the VM can talk to Chrome OS proper is through a small API that that cross VM program on the left up there exposes to the guest. This was pretty good. Now we’ve got a lot greatly reduced attack surface. We were pretty happy with this. We wanted to go a little further, so we made sure that the guest VM was also signed by Google and somewhat trusted. This lets us trust some of the actions the guest VM takes, and it’s also read-only.
So users can only break things so much and that no matter what you do, you’re going to be able to boot a VM. However, with all that security solved, we’re back in a situation where you don’t have enough flexibility, your apps can’t do anything. It’s a read-only thing: you can’t install anything in it, so we had another layer and for this we stole used lxd from canonical. That teams been very helpful in getting this spun up with us.
It’s a pretty standard container run time. It’s built for running system containers and in our case we started a system container of Debian and exposed to that to the user so that cross VM layer. I was talking about that’s kind of the most important part of the security story. Here it’s the last line of defense before something gets into Chrome OS. So we went. We focused on this for a long time and made sure we got that as secure as possible.
We wrote it in a memory safe programming language. We chose rust. This eliminates buffer overflows and integer overflows a lot of common bugs related to memory safety that are exploited by attackers. We were pretty happy with that, but we again added another layer of security here in that we broke up the virtualization program into pillars and made sure that each pillar that interfaces with the guest only has access to small parts of your hosts Chrome OS system.
So your host Chrome, OS system, you’ve got your bank’s web page open. You’ve got your online tax filing thing. Open you’ve got all kinds of personal identifiable information everywhere. We really wanted to protect that, but we needed to give the guest access to things like a random number, a display, a USB device, so each of those got their own jail and they can only see the thing they need, so our random number generator can generate Random numbers: it can’t access any files, it’s in an empty file system.
From its perspective, it doesn’t have any network access the display driver, it can access the display again, it can’t touch the network, it can’t go, grab your files and upload them, even if somebody gets into it and tries to make it do things we didn’t intend it To this is all a little complicated, but we’ve added a great amount of system UI to make this easy for you to use. So when you’re just doing your job as a developer, you don’t have to worry about these.
Pretty pictures I’ve drawn for you and I’ll show you of what we did. Thank You. Dylan security is absolutely top of mind for us. While crafting the Linux experience on Chromebooks, we came up with three high-level design goals. The first goal was to keep your experience intuitive. Everyone here in this room has been using computers for a long time and you have just established your workflows and habits.
So, basically, what we wanted to do is to match to those those expectations. We wanted to provide an experience, that’s natural to you. We want developers everywhere to be using Chromebooks and feel right at home doing it. The second goal was to make your experience native. We could have taken the easy path by giving you a full Linux desktop in a VM, but that wasn’t good enough. Our goal was to bring the Linux apps.
You depend on for development into your native Chrome, OS experience. The third goal was to make your experience simple, and I think this is very important. There’s a lot of complexity, that’s going on under the hood, and we want to leave it there. Our guiding principle is that complexity shouldn’t interfere with the user experience. There’s a couple of things. We are trying to balance here. The security concerns that come with installing Linux apps on Chromebooks and the simplicity that comes with sticking to design patterns established by Chrome, OS and our mission was to find that sweet spot all right.
So now we’re going to talk about three common developer flows and see how they work with crusting. The first of these is accessing files as developers. We have to do this all the time our editors need to access files, as do our compilers, our source control and a whole lot more, but the problem is that our file systems have a lot more than just code. They have our personal photos, our tax returns.
Maybe that novel that you’ve been working on a lot can go wrong. Ransomware can hold all of that data hostage. Malware can upload your files to some rain server, or maybe you just get something that goes and deletes everything for the fun of it. We built crostini with those threats in mind to limit what can go wrong and Dylan will tell you how so our goal, sharing files with your VM and with your container, was to make it easy for you to get the files you needed for your development tasks.
Where you need them, but not expose things, you don’t want exposed to untrusted code, because ultimately we don’t trust the code. That’s running inside this VM. To do this, we took a layered approach, your files all live in Chrome OS at the very bottom, and we share them out to the VM with a 9p server. We named it 9s again. We wrote it in rust, so it’s memory safe. We fuzzed it to make sure unexpected inputs, don’t cause unexpected behavior and we put it in a in a tight jail.
So it can access only the files you share with it and it takes those files and exports them to the VM. The VM mounts the 9p thing, that’s built into Linux and then lxd takes that mount and exposes it into your container, where your development tools are running. The important thing here is that your container can only see files. You say I want to share with my development environment. Your VM can only see those same files and even the server that we wrote running on Chrome OS can only see those files.
It doesn’t get to see everything. So somebody exploits this stack all the way back into Chrome OS. They still don’t have access to the files you haven’t shared with the container. That’s a lot of stuff to set up setting up 9 P mounts bind mounting things into containers. We had to do this manually for a while. We were developing it. It was painful, so let’s do to show you how easy we made it for you.
There are a lot of layers going on, but let’s see how simple this is in the UI right out of the box, you have a directory called Linux files, which is your home directory within Linux. Anything in this directory is automatically shared with Linux. Outside of this directory anywhere else on the device, Linux doesn’t have access to anything until you grant permissions I’ll walk you through a couple of examples here, let’s say you’re working on a project, and you see yourself needing files from this.
One folder called illustrations to share this: all you have to do is access the right-click menu and click on share with Linux. In as simple as two steps, you now share this folder with Linux. If you notice, this is in Google Drive and that’s a cool thing when you don’t want to share this anymore, you can do that by going to settings and unshare here’s another example where we made quick edits, really simple for you.
You have a data file in your downloads folder and when you double-click it automatically opens in vs code when this happens in the background it’s implicitly shared and the sharing last until you restart. This is the balance of security and simplicity. We wanted to bring you. Thank you so, for our second developer flow that we’re going to talk about we’re going to look at running a web server. Now being Chrome OS.
We care a lot about people making great web apps and we want to make sure that they can create those on a Chromebook and being able to run a web server is pretty central to being able to build any web app. Unfortunately, web servers also need a pretty low level of access, and that can cause some problems. The code that can run a web server is also capable of snooping on your internet traffic. It can know what sites you’re accessing and, in some cases, even see the contents of those pages.
This means that a malicious web server could potentially track everything that you’re doing now again, we thought of this as we design crostini, and we made sure that we prevented this kind of attack. Linux Dylan will tell you how I can be called Linux. It’s my job. All right so starting a web server from crostini, simple we’ve got a good demo over in the web, dev sandbox already type of command. You fire up your web server, just like you would on any Linux distribution out there what’s actually happening under.
The hood, though, is you’re in a container, and you open up a port that ports in a network namespace inside a VM running under our special hypervisor, which puts its network stack in another namespace on the host and then finally out to Chrome, so Chrome can’t get Back in which is great for security, you’ve got wonderful isolation, but if I want to test this new PWA or webpage, I’m running in my VM, how do I get chrome to talk to it? This was not simple.
So for that we had to add some demons along the way. Actually, every layer gets a daemon for this there’s the first one is running in the in the VM and it’s sitting there waiting to check if any container that’s running happens to open a port, and then it’s got to figure out which container open that port and Bundles that information up sends it to Chrome OS, so hey this port in this container is listening.
The user might want to use that port and on the Chrome, OS side we say – ok, the other daemon responds says I will set up a route to do some forwarding I’m going to forward all of this over Vee sock, which is a protocol used to talk To local VMS, on on machines, that’s kept under the hood, so either end talks HTTP in in to the demons and the daemons dog Vee sock to each other. So the key here is that the web server gets to talk.
Http Chrome gets to talk, HTTP everything’s, normal everything works. Just like you would well under the hood. We’ve got all this extra daemons and V sock forwarding going, but we’ve hidden that one other important thing we’ve made it trusted. So you can get all your PWA features. You can install it to your desktop, even though it’s not technically the same machine. We know it is because we’ve got the information we set up the VM, so we allow that to be trusted domain and all this complexity, I think, makes one of our best demos.
Today of how complicated we made it under the hood and how simple you’re going to see it is to actually use. I totally agree that this is very complicated under the hood, but in the UI it’s exactly like you would expect it to be. Let’s say: you’re experimenting with building this cool PWA here in terminal you’re in your folder pwe, a starter kit, you’re running a commands to start your web server and if you see at the bottom of this screen, it’s listening at port 8080.
At this point, you can launch your browser, go to localhost 8080 and test your web app on the screen here on the left. You have your web app in Chrome and on the right if you’re noticing it it’s in Chrome. Yes, you can test your web app on a Chromebook in Firefox too, if you noticed, we did not prompt you to give any permissions while we were in this flow. This is because the host is accessing the VM and not the other way around again.
This is another way we kind of balanced the security and simplicity factor. We were talking about all right for finally for our third demo, we’re going to talk about testing an Android app now this is really exciting, because just yesterday we announced that Android studio is officially supported on Chromebooks and we even created an installer just for Chrome OS To make it really easy to get started with now, of course, Android studio isn’t the only thing that you need in order to build a great Android app.
You also need something to test that app on usually a phone and well. You could do that over Wi-Fi with ADB remote all this sort of stuff. We wanted to make it easy, just the experience that you’d expect on any other vice. I can plug my phone in over USB and test my app that way. Now, if I’m an Android developer, sure I’ll plug my phone in to test my app, but I’m also going to plug in a lot of other devices over USB over the course of my day, I’m a plug in a USB Drive that has a lot of family Photos on it, I’m a plug in a wearable that has some health information I may even plug in my security key for work.
That gives me all of my access. Malware can take advantage of these devices to uniquely identify you as you move between machines to spread itself or even to make changes to them again. We thought of these threats at when designing crostini and made sure that we were preventing them. Implementing USB was a lot of fun, for us might have been our most painful stack same principles. Apply, we’ve got our layers, we protect the host there’s a lot of attack surface in a hosts USB stack to very complicated kind of loosely spec to protocol.
It’s an exact spec, that’s loosely implemented by a lot of people, so we’ve hidden that kept that on the host side wrote a device that we live in cross VM jail again, we’ve got a USB driver, it’s pretty complicated. It’s got a lot of code in it. I’r sure there’s a bug or two, so we made sure it was very well isolated. It can’t get to your files, they can’t get to the network, it also can’t get to any USB device.
You have to explicitly say hey. I want to give this USB device to my development environment. We’ve tried to make that as easy as possible and what actually happens under the hood. We’ve always got an emulated USB bus running so that the guest always sees hey. I’ve got a USB bus. There’s nothing plugged in and once you indicate that I want to give this to my VM, it says: ok, I’m going to add this device to this bus and then we show it to the guest and then the guest again in turn, has to forward that into The container and the container can see it there’s two things we were really focused on here.
One was security: again we dressed that with the jail, and we made sure the attack surface was as minimal as possible. It’s also written in rust and it’s nice and memory safe and it’s fuzz. But the other issue here is its privacy, because people somehow use lists of USB devices attached to machines to fingerprint and track users, and we wanted to make sure the untrusted code running inside the container couldn’t be another way to do that again.
This is a lot of steps. We have to create a device, we have to export it to a VM. We have to export it to a container. We have to decide which device to export and not and again we’ll have a demo that shows how easy it is. Okay, what this is the last demo, let’s say: I’m on my Linux and Abel Chromebook and you’re plugging in your phone you’ll see a notification that prompts you to connect to Linux.
At this point, only Chrome OS has knowledge of your phone. Linux doesn’t even know that your phone exists and that’s a good thing. If you see here, your phone is not listed in the USB list, but when you rerun the command once you connect on the notification, your phone shows up in the list. At this point, you established access to Linux to your phone. Let’s say: you’re working on a project, you’re developing a cool app again in Android studio and you’re, ready to test it out.
You hit, run and select the phone and boom just like that. You’re able to test your phone test, your app on your phone at this point you can debug and test out your app. Finally, you can go to settings and manage what Linux access to at any point of time. So you can see how security is at the core of your Linux experience on Chromebooks you, the user, are in full control at all times of what linux has access to.
We take advantage of a variety of UX patterns to make it simple to use and also native to Chrome OS. The combination of principles of Chrome, OS and crostini make this experience pretty unique thanks. My turn all right good. We got plenty of time, so we’ve been talking about a lot of details and I’ve been talking a lot about layers and jails and all that’s important and it’s a good reason for you to trust our normal flows and at when I’m using my Chromebook.
I almost always stay within these common workflows that we’ve polished and made sure work. However, a lot of that technical detail I was talking about is still usable and we’ve left hooks in for you to play with it. So I’m glad I’ve got time left. So I can go through a few of these examples and kind of just wait. Your appetite for what else you can do. We don’t test this stuff. We don’t support this stuff.
We really want the standard flow to be enough for everybody, but every once in a while there might be a reason you want to do something a little more advanced or you know you might just want to go, have fun and play with things under the hood. We’re tinkerers right supposed to be so we’ll go through and show how some of this stuff works. All this is going to be from the Chrome, OS shell. This has been in Chrome OS since longer than I have and so ctrl alt T gets you a shell.
There’s a set of debug commands. You can run we’re going to focus on one command, which is the the VMC command that we added to control virtual machines and containers the basic command. You can do a VM C list. It’ll show you what VMs you have installed on your system. I, the default VM, is called termina, so hopefully the fonts big enough and you can see what size it is. The terminal VM is the one that all the demos were done for the slides before.
So it’s up and running, we’ve made a shortcut to enter a container inside of yem. So if you want to go into the default container, the containers name penguin again, that’s that’s where we were doing all these demos from so the there’s, a BMC container command to get you into there will pop out of there and then we’ll pop back into just The VM so VMC start enters your virtual machine without entering your container.
So if you go back to my layers, it’s the one in the middle. The thing that LXDE runs in – and the reason you want to be in here is if you want to manipulate or change containers, so I mentioned we used lxd, there’s going to be a lot of LXE commands, that’s the lxd control program. This is well documented online and most of it will work inside Chrome OS, just like it does on a default. It want to install the first one you can do is a list you can see, we’ve got penguin running, we have one container it’s up and running.
It’s got an IP address, so we’ve got our one container. We might want to play with it a little bit and before we do, maybe I want to make sure I can get back to a state where I know it’s good right, because I’ve broken them before. It’s nice to be able to just go back to where I was and play around without worrying, so standard LXE command, it’s called snapshot and you give it your container name and you can give it the name of your snapshot and now you’ve got an image saved.
That you can go back to if you break things, there’s a copy on right. We use butter FS in the VM, so you’re not eating up a ton of disk space. We can get info on our container. This gives a bunch of information. Again, you can go poke around with this on a Chromebook. If you want to the important bit here, is that we’ve got one snapshot at the bottom, the i/o one snapshot we just created, you can have multiple snapshots.
It’s got a date on it to help. You remember if you didn’t use a very creative name and then, when you want to restore it back, Alex see restore these are well-named commands. They did a better job with this than I did. If you really want to go and play with different things, sometimes you want more than one container, so I’ve got my penguin container and I’m going to go say, install some different libraries in this one.
Maybe I want to have a container. That’s got Python two seven and a different one. That’s got Python three or maybe I want a different container for writing. Go then the container I have for writing rust. So we let you do that you can create as many containers as you want disk space limited. These do do cost this space. The most basic way to start off a new container is to copy an existing one. There’s an LXE copy command.
The example up here copies the the default penguin container over to a new container named Kingfisher. You can list the containers. We’ve got two by default: containers are stopped, so we have to start them now. We can list two there it’s running and you can jump in you say hey. I want to run bash in Kingfisher and now I’ve got a shell in my new container and I can go off and install whatever random toolchain.
I didn’t want in my default container, taking that one step further. We chose Debian because it was kind of the easiest thing for us to do. We didn’t want to tie you down to that, though. We support the Debian workflow. We support some guest packages that are installed in Debian by default, but some people want to use their favorite distro and there is a huge amount of distres available from the image server.
That canonical runs will install an arch one here, I’m not I’m not an arch guy. I don’t really know much about arch, but some of my co-workers talked me into doing this and playing with it. So now you can see, we’ve got three containers and I’ve got two Debian containers, my penguin and my Kingfisher, and now I’ve got something called arch test and again I can enter it by telling it to run bash, and if I want to install packages in this One I’ll use pac-man instead of app it’s actually it’s actually arch.
I promise that’s just a taste of what you can do from here. If you go and look at the LXE and lxd documentation online, you can get some more ideas, there’s even some help online about installing other ones and getting them to integrate better with the GUI. If you want more than just a command line, all right, so Dillon just showed you a bunch of the really cool tricks you can do with crostini. When you go under the hood and if you’re interested in this kind of thing, we really recommend checking out the crostini subreddit.
The folks they’re buying features as soon as we release them, sometimes even sooner and they’re, also really welcoming to new users of Linux on Chromebooks. So if you have any questions, please check it out and a big thanks to the folks there. So that’s Linux. On Chromebooks, as you can see, we already support a lot of web and Android developer flows and there’s a lot more to come, both in supporting other developers and in expanding what we can do with new capabilities like multiple containers and backup and restore we’re going to Keep applying these principles of simplicity and security to give you the best developer experience possible whenever you’re ready, we hope you’ll join us.
We’re going to be answering questions on the topic of speed that were submitted with the hashtag ask Google webmasters on Twitter. So, let’s start off with a question from row Heat: what is the ideal page speed of any content for better ranking on search? Oh you’re, asking me that question okay.
So basically we are categorizing pages, more or less as like, really good and pretty bad. So, there’s not really like a threshold in between it’s just like we are more or less roughly categorizing the speed experience for users and how are we actually doing that? Where do we get the data from yeah? That’s that’s important, so we mostly get data from two places. On the one hand, we try to calculate a theoretical speed of a page using lab data, and then we also use real field data from users.
Who’ve actually tried to use those pages and that field data is similar to the chrome user. Experience report, data cool, so we are having like hypothetical data and practical data, so we don’t really have a threshold to give away. But basically the recommendation, I would say, is just make sites fast for users. That’s what it boils down to that sounds good yeah. The next question comes from Olga and Olga is wondering if a website’s mobile speed is best looked at using the test, my site tool, the GT, metrics tool or PageSpeed insights.
Hmm, that’s a really good question. What’s the most important tool for SEO, we have multiple tools that measure multiple things and I can understand that that can be kind of confusing at times in general. These tools measure things in slightly different ways, so what I usually recommend is taking these different tools. Getting the data that you get back from that and using them to discover kind of low-hanging fruit on your webpages, so things that you can easily improve to really give your page a speed bump how’s that sound.
No, that sounds pretty good and also the tools differently. Like aimed right some some of these tools like test my side is pretty high level, so, like everyone understands roughly, what’s going on there, whereas GT matrix is a lot more technical and PageSpeed insights. I think it’s kind of in the middle of that so depending on who you are catering to who you’re trying to give this report to to get things fixed, you might use one or the other, so figuring out what is the low-hanging fruit and using the tool That gives you the best insight into that for the audience that you’re trying to convince.
Is it a sea level? Is it a other marketer? Is it someone from the tech side like this is a developer? Then you probably take a different tool. Next question comes from owner owner is asking: I am testing an almost-empty page on dev tool audits and it usually gives me minimum results which are 0.8 milliseconds for everything and 20 milliseconds for fij what it’s fed. First, input delay. First, input delay, of course, but sometimes it gives worse results for TTI, FCI and Phil.
Okay, let’s talk about these metrics fit. We have covered first input delay. Tti is time to interactive. That’s when you can first interact with the page and FCI is first cpu idle, which means that there’s no more JavaScript work or other work that needs to be done by the CPU. So it’s the same page same code, different numbers. Why would that happen? Well, first things: first, these measurements aren’t perfect right.
So if it’s between 0.8 milliseconds and 20 milliseconds 20 milliseconds is a lot more than 0.8, but it’s still quite a short amount of time. If you think about it, you roughly have 10 milliseconds for a single frame to draw so yeah 20 milliseconds isn’t too bad, so you will always see some some basically noise in that measurement and also don’t get too hung up on these metrics. Specifically, if you see that there’s a perceptible problem and there’s actually like an issue that your site stays like working on the main thread and doing CPU work for a minute or 20 seconds, that’s what you want to investigate if it’s 20 milliseconds, it’s probably fine! Our next question comes from Drew and drew asks us what is or are best metric or metrics to look at when you want to decide if a page is fast or slow, and why or why not? Would you just look at things like FCP, which is first content full pained FMP, which is first meaningful paint, instead of just the scores that these tools give you Wow? I don’t know, Martin.
You need to tell me some more about that right. Okay, so I guess the question here really boils down to what’s the metric that you should look at and that’s a really tricky one, because I guess it depends on the side. It’s the typical. It depends answer if you have just a website where people are reading. Your content and not interacting as much then I think, first meaningful paint or first content fool paint, it’s probably more important than first interactive delay or, first sorry, first input delay or time to interactive.
But if it’s a really interactive web application, where you want people to immediately jump in and do something, then probably that metric is more important, so don’t try to break it down, and that brings us to the scores. The problem in this course is they’re. Oversimplifying things. Aren’t they yeah, I it sounds like it. I mean all of these measurements sound like they’re, they’re, measuring different things and ultimately trying to understand what what a user would perceive when they access the page, so their score might be.
I guess a simple way to look at it overall, but it’s probably not all of the details that you need. It just gives you a ballpark. Really it’s like how fast is this page 5? What does that mean? It doesn’t really convey me, doesn’t it so, I would say like use that, to figure out how you’re roughly doing and then use the specific insights, the different tools give you to figure out where you have to improve or what isn’t going so well.
Wow yeah sounds like speed, is a tricky topic and you kind of have to know what’s what you’re measuring so that you can take action on the right things yep. So would that kind of explain why there is no simple number that Google is just giving yeah? So that definitely explains it because then, if you think about it, you can’t break down speed into one simple number. It is a bunch of factors if I’m painting really quickly, but my app is all about interaction.
It’s a messenger, so I show everything I show the message history, but if I try to answer the message that I just got and it takes me 20 seconds until I actually can tap on the input field and start typing, is that fast not really, but is It so important that I can use the contact form on the bottom of a blog post within the first 10 seconds. Not necessarily is it so? What how would you put that into a number you don’t? So I guess it’s hard speed.
Speed sounds hard. What what do you think will this get easier? I guess it will get easier, but it will never go to a point where you just have a score that you optimize for and be done with it right. It is such a broad topic that it’s really hard to break that down into like one number. Okay, so you imagine, the more advanced people will continue to focus on the the kinda, metrics and counting milliseconds and others will look at kind of a bigger overview picture.
I guess so, and together will try to find ways to improve the speed of the pages overall. I think browsers also doing a lot of work to make things faster in general and easier to understand, but, generally speaking, you will still need to go and do the work of figuring out. What matters to you, your audience and your website right is it interactive. Is it content? Full panes depends that sounds cool yeah.
So I expect more questions on speed on the hash tag. Ask Google webmasters and, as we get those questions, we’ll ask an expert like Marcin, who knows all of these three-letter abbreviations and who can help us figure out, which ones are the right ones. So thanks for submitting all of these questions and hopefully see you again on one of the future episode. Thank you very much for having me and thanks for all the questions.
Everything around just took a quick tour of it myself, and I wanted to show you guys. Some of the features when you first log into a sight, you’ll notice that you’ve got some default widgets here. This is what they shou yuan sort of like your home screen.
They call it the dashboard, and you see this is a site that it’s not really in use right now, but it still get some random traffic. It’s got a couple of visits, it shows you, you know how often people bounce off of the site. It shows you where the people are coming from and then just like normal you can, you know, change the dates you can say compare this to last month or well, last period of time that we want to look at.
So that’s that’s all they’re still you’ll notice that all of these widgets now have a little gear next to them, so you can actually change whatever the widget is. So if I, for example, I didn’t want visits, but I only wanted to have new visits there. Then I could change this widget and it would just change so what they’ve done is they’ve broken up these different metrics in two different categories.
So you see you’ve got the things called metrics which are sort of one-dimensional here and show you a number. That’s all they’re really going to do. You’ve got a pie chart you can compare things. That’s like, for example, this country code over here you’ve got a timeline which you may be used to seeing the you know visits per day and then you’ve got a table where you can actually see some metric and different values of that metric displayed next to some Dimension in this case, the dimensions are like one example is page title, so what I’ll do is right now just go ahead and create a new widget, and let’s, let’s make this a table and dimension that I really like to know is the page title, because sometimes I’r working on blogs that don’t have human friendly, URLs or legacy systems, where i’m not able to stick that in there.
So i’ve got page title, and so that actually show me is you know whatever you see in the search search engine result page for example, and then I like to say, let’s say how many visits to that page get and then the second metric. Sometimes I like to see how many people exited from that page or sometimes I like to see how many of those were new visitors you’ve got a lot of different options here. But let’s just go ahead and for this one pic exit and then it called it visits, because that was the first metric I picked, but really what I want to call this is pages or page titles or something like that and then, if you actually have gone Through this interface you’ll see, you can add a URL that will take you deeper within Google Analytics right here from the dashboard.
So really, this is for people kind of know what they’re doing, but I have played with this little bit. It works really well. So then you save that and then let’s say that I just want to take this may be down here. It’s all very drag-and-drop. I don’t really care about this being right up front. So now I’ve got there’s my pages and then the other one that I always really like to know is like how are people coming to the site, so I’m going to do another table and this time for the dimension, I’m going to look the keywords and just As you type it will autocomplete, then again, I want to say how many of them are visits and then in this one I want to see how many people search for that and then exited right away.
So i’m going to call this widget keywords and again I could put the link there if I wanted to just as an example Ryan price Mediacom. Just because we know that we can’t – and there you see it will show up – is like a little on a piece of paper and it will take you to whatever site it. Was you clicked? I think the normal ideas that you’re going to have a URL somewhere inside of Google Analytics. So in this case the keywords it says not set, meaning that this is probably direct traffic or a link of some sort.
So they didn’t come from a search engine result. Page when they found this website, so that’s a little bit about setting it up. You can also create new dashboards so right now they all all of your site’s come default with one dashboard. One thing that I didn’t really like is that, at least as of yet there’s no way that I’ve seen to copy the widgets or the dashboards from one site to another and also from one user account to another.
If you have, for example, you and then your business partner, both need to look at this analytics for the site, you both have to set up the dashboards individually and you have to duplicate all of your work. So this can be a little bit of a challenge and hopefully they’ll introduce some sort of a method for getting at that in the future. I’r one more that I set up was a pie, chart operating system operating system right, oh and then the metric here would be visits.
This is backwards, the other one we started with the dimension and we move to the metric this one’s backwards. So you can show up to six slices, that’s fine! So the last the sixth slice will just take other operating systems. And again I don’t want to name this visit. I want to name it operating system, and now you see that seventy-five percent of the visitors to this website or from windows, twenty-five percent or from iphone.
Obviously, if this were a more popular site, you’d see more slices but okay. So I just wanted to show you this with a site that had a little bit more working statistics on it. This is for florida, creatives, calm and you’ll see on one thing. For example, the timeline here you’ll see that the peaks and valleys of traffic, so for some reason on this week, on tuesday and wednesday, we had a lot of traffic come in on the site and then we can actually change us.
We don’t want to see visits versus visitors, you could see visits versus bounces, and so this can be a good way of knowing you will see. The this side is the actual metric for visits, so the highest is somewhere around 80 and then this side is the highest for bounces. So it’s somewhere around 50. They look like they’re the same but they’re actually on two different scales, so you kind of have to be adept at reading graphs to realize this.
We’ve got 74 visits and 41 bounces, meaning that and you could actually get I’m sure, there’s a there’s a way to get the bounce right in here too. But it’s a little over half of the people visited one page only and then probably hit the back button or closed that tab, whereas on the following day, even though it seems like there were more bounces just the way that you read the graph, so you can See the the average bounce rate is about sixty-five percent for this particular website.
Again, you can see where people are coming from. I’ve set up that pages, widget Keir will do visits any exits, so you can see that the majority of visits it will sort by this. First metric majority of the visitor coming into the home page: that’s the the generic home page title and then the second most popular page for this month. Anyway, is this cooking classes, page and you’ll, see based on the keywords to these? Are all directed traffic or non search engine traffic, whereas these next to Florida creatives that’d, probably bring you the home page, cooking classes, Orlando, that’s the second most popular page, so that kind of makes sense.
And then here the operating systems, majority windows, but a lot of Macintosh users on this particular site. And then we also have some iphone ipad. And then these not set are probably search engines or other sorts of scrapers. And then the other is just because I sold only have six, so I could probably make it more and i’d see tiny slices that were smaller than three percent. If I really wanted to, and that’s a little bit about the dashboards and widgets on the new google analytics
So I talked a lot about with my clients, the smart objectives. So this is objectives for your business or for your website or anything what you do in life, which is so the smart objectives are specific, measurable, actionable, realistic and time-bound.
So in regards to Google Analytics the important one is M for measurable. So there’s no point in having a website out there. If we’re not actually learning about whether that website is working for us, you could have 10,000 visitors coming to your website. But if you don’t know that 10,000 visitors who come to your website and be what those visitors are doing when they get to your website, there is absolutely no point in having a website at all.
It’s just of no use to your business, so I would thoroughly and encourage you whether it’s Google Analytics or any other stats tool and to have a a tool on there, which is grabbing those stats for you. So you can learn about your audience and how better to engage them. One of the first benefits of installing Google Analytics on on your website is actually its influence. It has on how your your website gets indexed, so if you’re using analytics and Google automatically knows that you’ve added a page to your to your website so and how it does this is when that page goes live you go and look at it.
It triggers Google Analytics and to load, and then it says oh well, this is a new page. I need to add it into my index unless you’ve switched it off using the robots and txt file. What this means is so Google also has a an automatic submission tool, so you have to manually sorry not on automatic and manual submission tools. You have to go and submit your your web pages manually. This just takes that that take takes out that extra step, so so long as you’re using Google Analytics.
Google knows, and whenever you add a new website web page to your website and it’ll index it within I’ve, seen it happen with the matter of hours 24 hours evening. The second tip which I’ve got is about understanding your visitors. So the key thing about the visitors to your website is looking at the they used to be called unique visitors, but it’s now sessions. They introduced that within the last sort of twelve months people used to talk about hits now hits could mean that you can load up a single webpage, but there could be a hit for every image that loads on that page and for the JavaScript in for the Style sheets – and things like that, so one webpage could generate 50 hits.
So that’s why we’re really interested in unique visitors or sessions to the website, because these are individual, unique people who are visiting your website. And this means that you can average that that data out over a period of time and see how many individual people are coming to your website and interacting with it over a and you know a minute-by-minute. If you want to get real-time information, but probably most people look at their stats on a daily, weekly or monthly basis, and this just allows you to give benchmarks and what those benchmarks allow you to do is that if all of a sudden, you see a dip In your website traffic, you can react to it so if, for example, you’ve uploaded a page of content which violates Google’s Terms and additions, for example, so they’re no longer listing your page and search engine, you can react to it D list that page go and tell Google about it and hopefully get that traffic back up because don’t forget nowadays, most people to validate a business they’ll go and have a look at their website.
If your website’s not being indexed in Google they’re, not going to be able to find you equally. If most of your website, traffic is driven through organic and search engine results, and your website disappears off planet you’re going to lose that business, your business could go under so keeping an eye on how your website is performing. If you start to see it tail off, you can react and hopefully and build that traffic back up to where it was before.
The third thing I want to talk about is and the different what a pageviews and fountain what constitutes the bounce rates? It’s a really common. I do a lot of workshops in this and it’s the most common question. What’s the bounce rate, so bounce is basically when somebody lands a new homepage and they leave without engaging with the site or basically doing anything, so they don’t scroll down. They don’t click on the link, they don’t read a article.
They don’t do anything and by default, that period of time is 30 minutes, and so, if somebody landing site doesn’t do anything with it for 30 minutes, then that’s considered to be a bounce. You can manipulate that. I think you can tell Google to reduce the bounce rate on your website if you want to, but typically if I mean, if they haven’t done anything in the first sort of 10, 20 30 seconds, probably unlikely to do anything with your website.
Anyway, so so Google displays this bounce rate metric and through analytics. The next thing I want to talk about is goal conversions and funnels so goal conversion. I talked about in a previous article about and the three things that happen within seven seconds. So the message you’ve got to get across is who we are, what you do and where do you want your customers to go to next so that where to next is and what we call a goal conversion? Ultimately, we want something to land on your website and either and pick up the phone or submit a contact form or buy products for me.
So so you can tell Google and Google Analytics what that goal. Conversion is so, let’s call it a contact form submission. The funnel is how they reached that point. So we create a funnel. A simple funnel might be land on the homepage. They go to the contact page and then they hit submit so there’s three steps in that. Funnel we want to and the way the reason why funnels are important is, it might be the let’s say you have thousand visitors to the website.
100 of them hit the contact button, but none of them have, and none of them are completing the goal. Well. Okay, now, what we can do is see where customers are dropping out at that funnel. Maybe we’ve got too many form fields in the contact or maybe the contact forms is broken, so this gives us an opportunity if we see that as a dropping out our particular points in that funnel that you’ve created for them.
You can react totally web developer to go in there and fix it. One thing which changed and quite dramatically probably about two or three years ago, with Google Analytics and another question which I started to get asked quite often was you can you can have a look at the keywords which people have put into Google and view those on On through analytics to see what keywords people have searched on in order to land on your website and there’s this one specific keyword that people started to realize was just gaining in popularity for every single website and it was something called not provided.
So I kid you not at the top of the list keywords on everybody’s google analytics and starting to become not provided, and now it accounts for about 90 % of keywords which people search on so now, people aren’t actually searching for the keywords not provided and ended Up on ending up on your website, the reason why it’s happening is because most search is now on Google and, if you look at on the URL and you’ll, see a little padlock icon and it will say HTTPS instead of HTTP, you know forward slash, Google com, So those searches people are doing being pushed through a secure, socket layer, HTTPS so through a secure layer and what Google does is it just obfuscates them? So you can’t actually see what those keywords are.
So it does that for privacy reasons to protect the person who’s browsing the web so now you’re getting loads of really useless information about keywords through Google Analytics, which is really frustrating so the workaround for it there is a workaround, it’s pretty straightforward! You can install something called Google Webmaster Tools onto your website and if you’ve got Google Webmaster Tools installed on your website and you can actually see what and searches are being carried out and resulting in your web page being delivered in the search results before people get To your website, through and through Google Webmaster Tools, so you’ve actually got access to that list of keywords and through another Google tool, it’s just really frustrating that you can’t see it through Google Analytics.
So that’s the Google not provided workaround and which there’s more information about it on my website or if you google, for it I’m sure you’ll be able to find a plethora of different tips how to work around it. So, just to summarise those key points, the reasons why Google Analytics is really important. So first it talks about smart objectives. Google Analytics allows you to measure the prompt to your website and happy for interacting with your website, and it has an immediate impact on how quickly can get pages indexed in Google search engine.
We can see how many unique visitors are coming to our websites and and measure that on a regular basis, we can have a look at bounce rates and see see whether people are landing on the page and how well they’re interacting on it and how many pages They’re actually viewing and finally, we look at goal. Conversions been creating funnels to track people right the way through to a call to action which we’ve created for them and at what point they’re dropping out of that process.
So I hope you found the article really helpful and thank you for reading. Don’t forget if you want to read more articles than please hit the subscribe button and if you’ve got any questions about this specific article, then please leave them in the comments box below I’d. Be more than happy to answer them!
.. You know the rest. So a lot of you Are under a lot of pressure right now and facing a lot of anxiety because of The jobs scenario in the country, A lot of you – have lost your jobs or some of Them are on indefinite leave, don’t know when you’re going back and it can cause A lot of problems – and there are so many people at this moment, looking for work, From home jobs, freelance opportunities and jobs that basically won’t put them Out of a job with a scenario like this Well, I’m here to help There is an industry Right now, which is the best to be a part of That industry, is Digital Marketing.
Digital marketing is so vast. There are so many careers within this industry. I myself Work in a digital marketing agency in Mangalore called Alter Marketing. Management as a Social Media Specialist, Now digital marketing itself is so vast. It gives you a world of opportunities, and not just with regard to salary. All Brands all companies right now are on the digital sphere, because you’re on it And they’re not going to stop anytime soon.
So what are you waiting for? Get Into the digital field, right away, Now, keeping this in mind Alter Answers is Here to help you out What we thought is we’ll help you explore, learn and find the Right opportunities within digital marketing and to do that, what we’re Going to do is we’re going to spend an entire week sharing with you tips, tricks Amazing resources and even conversations we have had with experts in the industry, Who learned without having an educational background in that field? So Imagine how much help it is going to give you.
So what we’re going to do is Basically help you tell you where to start how to start, And where do we start now? We’re going to start with one of my favorite careers within digital Marketing industry, which is Social Media Marketing, If you don’t know how Important of a career social media marketing is right. Now I have attached a Link in the description please go and read, it and you’ll definitely know So to Talk about social media marketing.
I have with us a social media, marketer who’s Name is Rachit Hegde. He is a Facebook Certified Lead Trainer. He’s a Facebook Ad specialist and a lead generation specialist: He is the Co-Founder of The Small Business Project, which is based in Mumbai and he’s an Expert in something called as Performance Marketing, which is basically designing. Setting up and running ads for various companies, including healthcare, fitness As well as events, Fun fact-, if you’ve known the biggest TEDx event that Happened in Asia, which is TEDx Gateway, which happened in Mumbai, The Digital marketing, social media marketing, especially was done by Rachit and his Team Now it is amazing that we’re getting to talk to someone like this, but the Best thing about him is that he started out not after he went through a lot of Courses He started out first when he was an engineering student and he was in Charge of a battle of the bands event in his college and he wanted to promote it.
And he used Facebook and social media management practices to do it, which makes it very, very interesting and I’m sure, you’re very interested to find out how He started out So guys join me in saying Hello, Rachit, Hey Disha. What’s up How Are you doing I’m doing great? How are you doing I’m keeping well? Thank you. Okay, so thank you so much for joining us today. It’s great to have you here, The Pleasure is mine Disha.
I know it is Rachit. I know it is Anyway, I’m going to get straight to the first question, So I Know that you don’t have a background in marketing, You are an engineer by Profession and yet you choose social media marketing as a career. So what Exactly influenced you to choose it as a career or get into the field of social Media Well, first and foremost, I, like I like people I like dealing with people, And I’m very fond of technology and along the way, I think I like being Backstage working on a product or service and seeing it come to life, and I Think, somewhere along the way, you know a bridge between technology, people and Marketing got me into digital marketing.
We you Know the story about you, starting out your first gig as a social media. Marketer was when you were handling battle of the bands. Can you Tell me something about that Yeah, so I think it was. It was about six.. Six years. Ago I think it was my fourth year in college, the third or fourth year in College – I don’t remember, but I was actually made to organize an event. Called the Battle of the Bands, You know the logistics, putting it together and Also, the marketing and we were tight at tight with budgets back then right and We wanted to see how we could make do with the resources in the best possible Way – and I remember back then about six years ago, I spent like a hundred or 200 Rupees on on Facebook Ads – and you know I saw some numbers come up, so I think that Was a curious start into digital? For me, That’s really good to know, and I’m glad that you started out that Way, it’s a fun story to tell as well.
You spent a lot of time learning digital Marketing and social media marketing, so can you tell us what? How exactly did you Learn the tools and develop the skills to become a social media, marketer Well, To learn courses, there are multiple courses available online, Free and paid Depending on what you want to go for it depending, if you have a budget or not, I Think going through those courses and actually applying it and working on A portfolio because that makes a big difference.
Fortunately, for me, I reached Out to a couple of friends who were starting out their own businesses and Also people who had taken up to their family businesses So that way for me, I Got a chance to experiment and explore and try out whatever I was Learning on these different, you know these different businesses and that Became my portfolio right, It would be difficult for me to go. Get a client Because I would not have any credibility, but this way you know I was doing as Much as you know, these people got their work done at no cost or probably free It was actually a bigger favor for me to have a portfolio to present to people.
Beyond that, Let me ask you a more basic question: Because a lot of people don’t really know what a portfolio is and how Important it actually is, so if you can tell us what a portfolio is and how Exactly you built your portfolio a little more specifically, if you could Do that for us All right, so a portfolio could be very specific based On which vertical of digital marketing you want to go to because, like I said, Digital marketing is a large, you know it’s a large field, it has its own Verticals within it, You could be a person specializing in Facebook ads in Search engine optimization in affiliate marketing, influencer marketing, You Could also be building websites in general, which is your basic web Development right – and it depends where you want to showcase your, how you want to showcase your portfolio but, more importantly, where a portfolio Stands out is if you are able to showcase how you were able to present or You know showcase a growth of a business.
You associated a partner with from point A to point B during the time you are, you know you helped and worked on it. Right so that gives a better vision or sense of better standard for people. Wanting to understand what a portfolio is supposed to look like, So just to simplify, basically a portfolio, is you know your practice? It’s like a practice pitch. You create a lot Of things based on your experience and then you have it to show for your Clients in the future right Yeah best practice, because also you need to show The right kind of portfolio going forward, For example, if I have a Portfolio, for example, of of ten different kinds of businesses and if two Or three of them could be portfolios of real estate and, if I’m not too keen on Working on the real estate side, although I might have worked on it, it’s not Something I’d necessarily want to show as my portfolio, So I’ve heard that you Went to a lot of friends when you started out to get their portfolio, I mean to build your portfolio, you kind of went to them and asked if you could do Their website is that true Yeah, it worked both ways.
They said: “, hey, you’re, Doing this, your jobless, why don’t you do this?”? I said “, Yeah, great” and also I requested People, if I could try out what I was learning on their Businesses, because I was also certain that it was going to work and also it It didn’t come to all these people at a cost, so they were willing to Experiment also, So it was a win-win situation. Both ways.So portfolio is really really important when you are starting out as a social media marketer.
Yes, it goes. It holds much higher weightage than any certifications you get online. They don’t Matter: Okay, so now you’ve been in the industry for a while. Now can you tell me How long it actually takes for a freelancer to make money out of working As social media marketer as a freelance Well honestly, since I got into Digital marketing, my first three months, I think, was a lot of learning on pure Basics and it and I kept learning I I started taking projects three months.
I Mean three months into the learning phase. So if you ask me, I think I Actually started, you know making my first buck as a freelancer, probably five Months after I began my learning process, It could have begun earlier too, and This is something I would like to share you. I don’t think anyone needs to be in A hurry to earn that quick buck, because the way I look at it there are enough Businesses around us, everybody needs marketing, it’s not a big deal.
If you go Out there and actually get a client, I mean it’s really nice, but you know it’s Not too difficult What actually matters is getting the right kind of client by Showcasing the right kind of work. So if you actually end up working on yourself, Understanding tools and processes better in digital and are able to build your Portfolio well and then go and get a client that that would be a normal flow.
But if you ask me six months, I think it took me six months. I could have done it. Earlier I just chose not to That’s nice, but for people who are looking for something more specific. How much would someone with your experience make in a month just to be just to know how much that would be Sure as a freelancer, you know You can a freelancer can bill a client or a brand at you know: 20,000 Rupees a Month to 50,000 Rupees a month, even a lakh, a Month, so it depends on how much work you can handle if you can Handle two or three clients who are paying you about 40,000 Rupees a month.
Yeah, you can learn about a lakh and 40,000 Rupees a month as a freelancer, but then Again, you know, being a freelancer. Has your pros and cons, I mean you’re, a Single man team, which is going to be difficult because you can’t you know Take days off you’re going to be, you can’t handle the crisis of three Clients at the same time, so it has its pros and cons, but yeah I mean it. Depends on the individual, so anything between like say, even if you charge Three different clients: ten thousand rupees each.
You can start with at least At a thirty thousand rupees a month, So as a freelancer, you can make 30,000 a month. That’s really good! Ok, so now to get into something more Serious Now, once you developed the tools and you developed the skills to be a Social media marketer. How? And where did you find the clients? Because you know They’re not like sitting there waiting for you. How did you find your clients To be honest, with you most of my clients, I found that at a party My First client I found out at the bar quite literally and most of them, but When that that’s quite true right, I think for me personally, personal Connections has worked a lot because if you’ve done work for somebody and you Know, there’s a very and if they’re happy, there’s a very high chance that they Will refer you to their peers in their network because again, if you refer Someone good you know it’s a pat on the back as well right, because a good Referral goes a long way.
Apart from that, I did. I did use different Facebook Groups I mean everyone should be aware that every city town has some localized Facebook group or the other right where people are probably wanting something to Sell wanting a service or wanting help or whatever Every city has it a Bangalore has it Bombay, has it Bangalore, has even more localized groups for every Area like in Indranagar will have their own groups right so tapping into these Groups and not selling your products right, You want to be offering value.
People will post a question or a problem on their group. Go there help them out. Get on a call with them solve that problem. For them you never Know I mean if you manage to build a trust which I think, for me at least, has Been the biggest in a factor, because if you, if you give someone value, they are Able to trust you and they would like to work with you in the long run and then Referrals come So word of mouth is the best way to you know to get across your clients, but to make a start, you have a lot of Facebook groups that you know where People inquire and also there are there are freelance platforms: upwork.
Com Freelancer.Com are platforms, they are very competitive. You need to be, you know, Good at closing your deal to be able to get your projects on on these platforms. Because it’s a bidding, it’s a bidding way. It’s a way. You bid for a particular Project and at the same time, it is how you communicate to them to actually land Your gig, so these things matter on on platforms like this, but why I choose to Prefer, like you know, a Facebook group over and up work personally, and this is What’s worked for me is because, if I, if I establish a connection over a Facebook, Group – I don’t know it’s just that I feel there’s a friendly approach already, if Someone’s on Upwork or on freelancer.
Com, the chances of them There, on that platform for a one-time, gig is very high right On any of the Other blogs, you could look at having associating on a longer period of time. But it’s not entirely true, because you know what if I I recently did a gig on Upwork where the client said: hey, listen, I’m calling you the next time. I’r Launching this, so you know it depends on your rapport with the client Okay, so I guess, like you know, it was very interesting that you said that you Started with you know, socializing with people and that’s how you found your Clients – but I guess now, with the lockdown pandemic social distancing, that would Be impossible, So the best bet would be Facebook groups and freelancing websites & job sites, like you said, so that’s really helpful.
Thank you and The next question I have for you is, you know: a lot of people say that having a Mentor in a certain industry that you’re entering having a mentor is a Great thing, because they’ll help you, because they have experience in that Field, so do you think that having a mentor is you know, is required for Someone who’s starting out. It’s a tricky question. I can speak for myself. I don’t think it’s important to have a mentor.
I don’t think it’s important to Be confined to one person for all your advice and needs. I think it’s important To have an open mind, get your information and resources and You know advice from different people, irrespective of the kind of expertise or Industry they come from because you never know where you can find value and Pickup some information and work on it. Having said that, I do come across you.
Know I mean I’m sure we all do come across times where we, you know, we Glorify a certain personality or a person, and we are enamored by the kind Of work they do, and you know we go crazy about that. Right and it’s normal to feel that way, and I feel that too, at times with Certain people and the point is I’m aware of it, and I also choose not to be Attached to that – and I think that’s important Literally a few days ago, I was Sitting with a eight-year-old, you know helping the eight-year-old on on Something on the computer on a tool and that eight-year-old taught me a tool.
I Was really searching for on the internet for a long time right and specifically For my system requirements and I said wow thank you, you made my life a lot. Easier right, So I think anyone who can give you some kind of direction. Irrespective of who they are where they’re from they are your mentor, but Don’t restrict to one That is the best thing I have heard today. I think that we can learn Anything and everything from the people we meet from the books, we read whatever and everything and that’s really good advice.
So you know the life of a Freelancer is really glorified on social media. You know how they tell you that You know you can sit by the beach and you know you have Your laptop and you can work, and you have couples traveling the world and making Money as freelancers, so I just want to know what is the reality behind this What is your experience been like as a freelancer About working and sipping Margaritas by the beach Did you do that I have, but then you know it’s One day in your life, you’re, probably one day in your year, I mean it’s not every Day I mean you have to work, you have to be realistic.
You have to be practical, Right Yeah, there have been a few days like that and I can count the number of Days or probably 2 or 3 days in the entire yeah, but but no you know Especially the freelancer life is over-glorified on Instagram. It is I mean there are two sides: there are true and false sides to it. You have your freedom, So you can literally do what you want. Yes, but the whole flashy cars and you Know big pools the spontaneous traveling, I think a lot of it isn’t actually what It is, I do know, a couple of people who lead such lives and are very good at it.
But I also do know that a majority of people, you know, don’t actually lead Lives like that, so if you ask me, Instagram is Instagram because it’s Supposed to look good people put out their best pictures, That’s very true, okay, so now that we know what your opinion is on that, can you tell me what a day in the life of a social media marketer is a day in your life A day in My life yeah, I mean it’s, I mean just like every other job has its Own challenges and is probably hectic in its own way for us, it’s a lot of screen.
Time right I mean it’s a lot of phone times, a lot of communication and all of That, especially if you’re working on a brand where things are being launched, Posts need to be live, ads need to be live, there’s a lot of coordination and Communication right, so I begin my day by you know literally going over my tasks. Lists and things I need to be done. Normally, I have a preset set of calls. That I have scheduled for the day, which I have to Take make and that’s normally set over the weekend.
I make sure I set my calls. Ahead but then, during the rest of the time, it’s making sure things are going. All right finances are in check, clients are happy, marketing strategies are in Place coordinating with the team and every day is this probably something new A new problem to solve so there’s no definite way how the day goes. But yeah, that’s in a nutshell: that’s how it is, But you enjoy this life that you’re leading as a social media marketer I do I enjoy.
There is some method in the madness here Nice. So is there any book or you know, Resource you would recommend for someone who’s, starting out as a social media. Marketer, because I myself am very interested in the topic. And if I want to Learn usually I pick up a book or two to read about it. I am better with reading books, so is there any book or resource you would recommend You know for a person Starting out on social media and digital marketing, books are a great point to go.
For if you want to understand something in principle, the only way the only Reason is because I feel oh, and this is what I genuinely feel Digital is so dynamic, and technology updates itself so fast that if someone Has to write something down: publish a book. Go for printing, get it on the Shelves I mean that’s a lot of time. Things are redundant, they Are not updated anymore right, so I think, on the Digital side, I personally read a lot of blogs.
I read at least a minimum of 5 to 10 blogs. Every day – and I have to I read from marketing land from social media today, From social media marketing world from SEM Rush has a couple of nice blogs. Written Neil Patel writes nice stuff. Of course everyone knows These are Some of the blogs, because blogs are written more spontaneously and updated Then and there so as opposed to books Books have that principle defined.
I am But if you want to something that you want something, that’s updated, I guess Podcasts or blogs are more up-to-date. Is there any podcast that you listen to? You know religiously, I’m a person that gets bored too Quickly, I need to consume information too, and keep moving over there’s One there’s business voice is a nice podcast, but of course it’s more the business Side of things There’s an interesting podcast by Sean Ellis.
The person who Wrote who wrote the book Hacking Growth? Oh by the way you asked about the book. You asked for books right, so here’s a book called hacking growth by Sean Ellis Which is which is nice Sean has also also has a podcast, I’m not sure what It’s called, I think we can figure it out and we can put it here by But it’s it’s! It’s it’s! It’s a podcast by Sean Ellis and that’s really. Interesting for those looking at scaling startups understanding how the process The behind the stage and the behind the scenes of scaling and growing these Businesses, so that’s that’s an interesting one.
I I’m not getting the Name but yeah, I’m sure we can plug this. I will find it and I will link it here in the article, so they can go and hear the podcast Okay. So now, looking at the scenario you have had experience in this field, based on your experience and the current Scenario, what advice would you give someone who would like to start out as a Social media marketer Still a great time. There are enough businesses that are out There needing these services so yeah, it’s a great time to be getting into Social media, marketing or digital marketing any of these verticals – I don’t Think the person should look at you know making a quick buck, because there’s no Shortcut to it, Learning the tools, well, understanding them.
Experimenting, you know that that’s that’s a process. Someone needs to look Into a look into, and not look at one of these, how do you become a millionaire Overnight schemes, that’s not you, so you know, keep growing I mean, I don’t think, there’s anyone who’s an expert in this field. The industry is so dynamic, there’s so much to learn so yeah, I’m just you know. Adding this to it, what advice would you give your younger self? So when you Started out, if you know, based on whatever you have learned so far, is there Anything you would go back and tell your younger self, you know advice, you would Give your younger self basically! So it depends.
This question: are you asking me Before I did engineering after I did engineering Coz its two different answers, Say after you did Engineering After I did engineering. So after I did Engineering I applied with the two companies. Actually I applied with the Minimalist from Bombay I applied with Facebook, Singapore, Both of which I I got To quite a decent part of the interview I think, for Facebook it was the top Something thirty or something like that for the Singapore role and I think for Minimalist was the reason why I made my first trip to to Mumbai in the first Place – and we had an – I had an interview, I think, with Chirag of minimalist at that Time, I think my objective was to to find a job if I was going to be associated With companies with good visions – and you know, were here for the long run, Otherwise, I would want to choose a freelance route or an agency route that Was my objective? So if I had to do anything differently, that’s going to be Hard because I don’t think I couldn’t I would do it, I’m happy with the way we Are progressing Of course, my there are more micro level decisions.
I would have made differently. Probably I would not have signed off for signed off on certain clients. I would Not have taken on certain work because a lot of clients can slow you down. You Know and hamper your growth so that way, I think I would have avoided certain Certain clients, So now for those who are listening and reading right now, if you could give a few steps to start out as a social media marketer that would make it easy for them to transition and to get into the industry.
What would Those steps be The first first step is to learn, learn, study some courses, There enough courses, free courses online – you can put yourself through a paid Course or you could do a free course, but but then it depends on you know if you Have the bandwidth to go through a structured course and if it suits Your budget, that’s that’s a route you can take If you and soon after doing This course, or while you’re doing this course, it’s important to at least get Yourself, two clients or two prospects, or you know your uncle’s father’s friends.
Business and work on it experiment on it, so you can learn while you’re. You know, While you’re working on it, because you don’t want to be Experimenting on a person who has just given you a business and paid you and You know goof it up right If you do it well, that’s a different case, but you Know, that’s you would want to not. You would not want to get into that kind of A situation Once you finish your learning process finish your portfolio.
Building process and then decide if you want to get into a job, freelance or Start your own business, Each of them have a beautiful career path and you Know and they’re each nice in their own way. It depends if you want to work with An agency or if you want to work with a brand, if you want to freelance yourself Or if you want to build a team together and offer the same services to other People or if you have a product in mind and if you understand digital marketing, You can always sell that product using these skills right, but then you know it Again, I’m going I’m just going back to the first point of having to learn while There are so many courses paid courses out there, it’s not necessary to actually Buy a paid course there’s enough resources for free and, having said that, I mean I mean, and this is despite saying that, because we have our own course too- And and and we follow a very structured approach of how A person can learn Facebook and Instagram ads effectively and also we Teach them how and where to get clients, and you know about proposals and all of That right, So it depends what you want at the end of the day and how well you Are determined to be learning, and that would that that would be a decent start.
Saying, that your course that you launched recently in that course you’re. Basically sharing All of these things that you learnt over the years and you’re making it easy for The people who want to learn so that they can apply it very easily Yeah completely Because I didn’t know a lot of things, I didn’t work at an agency. I didn’t work. I Didn’t have a freelancer to guide me. I figured it out myself.
I compared Business models with other business models, with brands with with the Marketers, I I learned from a lot of different marketers, because one thing in Digital marketing people need to understand, is it’s okay, Learning a digital learning, digital marketing from a course from an Institute because they are teaching your basics, they’re teaching your Fundamentals, but when you learn from another marketer and I’m not just Putting myself on a pedestal, yeah, I’m just generally giving you my perspective.
If you learn from a marketer, you get a different point of view because It’s it’s at the end of the day, the job is very similar to like say a doctor. Right, If you and I have the same illness and we go to two different doctors – those Two doc doctors are going to have a different approach and give it and start And give us different prescriptions right and it’s the same thing with Marketing as well, you might have your approach and I might have my approach.
And they can be completely different and it’s okay to be completely different. But At the end of the day, you want to be learning from people who have tried. Tested those you know the and have tried, tested methods and learn from them. So Which is why I mean we are putting, in a few case, studies we’re putting in examples we’re telling people what to do, what not to do and also tell them what they can do.
Beyond learning it like how they can find a living for themselves, So whoever is reading right now, if you want to know more about Rachit’s course, we will be linking it below in The description, so you can definitely check it out, So I guess Rachit that would be the end of you know the questions that I have for now. I have too many of Them, but I’m still restricted to that much now. Thank you. So much You’ve been amazing.
The advice you gave is very practical and I know that it’s going to Help people who want to start out so thank you so much for doing this. Thank You for taking the time out and joining us on Alter Answers. Thank you, Disha. I was happy answering all these questions. I wish you guys all the best you guys Are doing some really nice stuff? Thank you so much Talk to you soon, then Byee
We want to know what users are doing on our site, which pages are popular, whether users follow the paths we expect and if anything goes wrong. Analytics is all about collecting measurements of user activity on the site. Google Analytics is a service that collects processes and reports.
Data about an applications, use patterns and performance, adding Google Analytics to a web application enables the collection of data like visitor traffic, user agent, the user’s location, etc. This data is sent to Google Analytics servers where it is processed. The reports are available in the Google Analytics web interface and throw reporting API. Google Analytics is free and highly customizable.
Integrating Google Analytics is simple. First, you must create a Google Analytics account. Each account has properties, these aren’t JavaScript properties, but refer to individual applications or websites. Google Analytics then generates a tracking snippet for each property. This is a piece of JavaScript that you pasted into your page. It sends data to Google Analytics back-end. You can also use the analytics library to create custom analytics, such as tracking specific user actions or tracking push notifications.
I want to say a bit more about properties. An account has properties that represent individual collections of data. These properties have property, IDs, also called tracking IDs. That identify them to Google Analytics if an account represents a company. One property in that account might represent the company’s website, while another property might represent the company’s mobile app. If you only have one app, the simplest scenario is to create a single Google Analytics account and add a single property.
To that account. The analytics server will then generate a custom bit of JavaScript matching your account and property. This is the tracking snippets. This is the key part of the tracking snippet. The entire snippet needs to be pasted into every page. You want to track at a high level when this script runs. It creates an a syncs Tagg that downloads analytics is the analytics library defines the GA function called the command.
Q creates a tracker that gathers user data and sends this data as a pageview hit via HTTP request to Google Analytics. This data is analyzed and stored in your analytics account, in addition to the data gathered by tracker creation, the page view event allows Google Analytics to infer what pages the user is visiting, how long they are visiting them and in what order for simpler applications. This is the only coding required note that you can replace analytics j/s with analytics underscore debug KS for console debugging.
Using this version will log detailed messages to the console for each hit, sent it also logs warnings and errors for your tracking code. The data is sent to Google Analytics back-end where it is processed into reports. These reports are available through the Google Analytics dashboard. Here is the audience overview interface. Here you can see general information such as page view, records bounce rate, ratio of new and returning visitors and other statistics, it’s also possible to view analytics information in real time.
This interface allows you to see hits as they occur on your site. I encourage you to take some time and explore there’s an extensive set of features in the dashboard. You should explore the standard reports and look at creating your own. Knowing how to use analytics effectively is a skill in itself. Fortunately, the Google Analytics Academy offers a free set of online courses. I encourage you to install analytics on some of your sites.
If you haven’t already check out the free analytics Academy courses as well, then once you’re comfortable with analytics, come back and I’ll show you how to integrate analytics into a PWA. Thanks for reading and I’ll see you soon,
We are here to talk to you about Linux, for Chrome box, also known as crostini. We will start by introducing ourselves. My name is Sudan. I am a designer on crostini for Chromebooks hi, I’m Dylan, I’m the Chrome, OS virtualization lead and I’m Tom product manager for Linux on Chromebooks. Now it’s the end of day two at i/o and you’ve probably already been to a bunch of different sessions that have talked about all the new frameworks that you need to be using or the platforms that you need to be building for and everyone’s right.
You absolutely should be, but we’re not really here to talk about that. Instead, what we want to talk about is you as developers and how you can get more peace of mind by using Linux on Chromebooks, we give you that peace of mind by balancing simplicity and security. On that note, let’s do a quick user study. How many of you are developers in the audience? Wow, that’s full room as expected. Keep your hands raised, how many of you use your computers for anything else, other than development like doing your taxes, checking email, again, 100 % of you, okay, one last question: how many of you are worried about security? Good, that’s pretty! I mean you all should be so I’m glad to see many hands up anyway, so I don’t know about you, but when I start a new project I I get stuck a lot right.
I hit a lot of walls and I hit a lot of barriers and go to look for a problem, go to look for a solution and I turn to Google. Luckily, Google’s almost always got a great answer for me. Unluckily. Sometimes the answer looks like this, and I know I shouldn’t run this script from evil site, comm and pipe it to soo do. But you know that deadlines coming up. This may be, the site, looks kind of legit, so in this case I’ll make an exception and I’ll do this and then it happens again and again and eventually I end up with a system that I don’t trust as much as I should, because I don’t really Know what code I’ve run on it anymore? I don’t have time to read all these scripts.
My solution to this has been to carry two laptops, one for my developer world and one for my everything else world that I want to be secure in, but recently I switched to using one laptop and Tom’s going to talk about how I do that. So our goal with Chrome OS has been to give you a simple and secure experience from the start, but if you tried it previously, you might have seen that it wasn’t quite ready for developers in order to be simple and secure.
We couldn’t run all of the tools that developers need to get their job done, but that all changed at i/o. Last year, when we announced that we were going to start supporting Linux on Chromebooks Linux on Chromebooks lets, you run all of your favorite editors, IDs and tools, and it’s now supported on over 50 % of Chromebooks, including great devices with eighth generation. Intel CPUs like the Lenovo yoga book C 630 and the Acer Chromebook spin 13.
If you haven’t seen it we’re going to run through a few examples. First off, how do you get it? It’s really easy! It’s just a couple clicks now. In the background, this is downloading a virtual machine setting up containers configuring, it all Dylan’s, going to go more into that in a few minutes. But for you as a developer, it’s just a couple clicks to get started and this adds a terminal to your launcher.
Now, if you open that terminal, you’ll see that you have a pretty standard, debian environment and we’ve already loaded in a bunch of the tools that developers expect like git and vim. And if you need anything else, you have the apt package manager and you can install whatever packages you need and if you want to, instead install files or install programs via dev files, you can do that too. This gives you access to thousands of world-class developer tools.
Now, once you’ve installed, any graphical you’ll find that they all show up in your launcher, just like the rest of your Chrome, OS apps, and if you open them, they show up in your window manager again just like the rest of your Chrome, OS apps. This is the simple experience that people have come to expect from Chrome OS and we didn’t want to change that with Linux. But importantly, this is also secure.
You don’t have to worry about malware, accessing your files, snooping on your traffic or infecting your peripherals. I’d ask you to trust us on that, but this is way too important for you to take on Trust alone. So over the course of this talk, Dylan and Sudha are going to walk you through the principles behind the architecture and design of crostini. We’re then, going to dissect some common developer flows to show you how these principles apply and, finally, we’re going to share some tips and tricks for advanced usage for the power users out there.
So now I’m going to hand it over to Dylan to talk about the architecture. Okay, so Chrome OS has always had a layered approach to security, and our big layer has always been the browser and the renderer and running all untrusted code in a nice, isolated renderer, and that keeps the attack surface of your core system to an absolute minimum. They’re not allowed to make a lot of system calls, they can’t poke at random bits of your kernel and that worked really well for webpages web apps.
However, for developer tools, I need to install a lot of different programs. They need a lot of different privileges. They can do anything any app on Linux can do and that wasn’t acceptable for us on the core of Chrome OS. So we need that a layer, so we added a virtualization layer and that lives in the main, Chrome OS layer and that spins up a VM. And now this VM has a much more limited interface, while still exposing a full Linux kernel to the programs that run inside the VM.
The only way the VM can talk to Chrome OS proper is through a small API that that cross VM program on the left up there exposes to the guest. This was pretty good. Now we’ve got a lot greatly reduced attack surface. We were pretty happy with this. We wanted to go a little further, so we made sure that the guest VM was also signed by Google and somewhat trusted. This lets us trust some of the actions the guest VM takes, and it’s also read-only.
So users can only break things so much and that no matter what you do, you’re going to be able to boot a VM. However, with all that security solved, we’re back in a situation where you don’t have enough flexibility, your apps can’t do anything. It’s a read-only thing: you can’t install anything in it, so we had another layer and for this we stole used lxd from canonical. That teams been very helpful in getting this spun up with us.
It’s a pretty standard container run time. It’s built for running system containers and in our case we started a system container of Debian and exposed to that to the user so that cross VM layer. I was talking about that’s kind of the most important part of the security story. Here it’s the last line of defense before something gets into Chrome OS. So we went. We focused on this for a long time and made sure we got that as secure as possible.
We wrote it in a memory safe programming language. We chose rust. This eliminates buffer overflows and integer overflows a lot of common bugs related to memory safety that are exploited by attackers. We were pretty happy with that, but we again added another layer of security here in that we broke up the virtualization program into pillars and made sure that each pillar that interfaces with the guest only has access to small parts of your hosts Chrome OS system.
So your host Chrome, OS system, you’ve got your bank’s web page open. You’ve got your online tax filing thing. Open you’ve got all kinds of personal identifiable information everywhere. We really wanted to protect that, but we needed to give the guest access to things like a random number, a display, a USB device, so each of those got their own jail and they can only see the thing they need, so our random number generator can generate Random numbers: it can’t access any files, it’s in an empty file system.
From its perspective, it doesn’t have any network access the display driver, it can access the display again, it can’t touch the network, it can’t go, grab your files and upload them, even if somebody gets into it and tries to make it do things we didn’t intend it To this is all a little complicated, but we’ve added a great amount of system UI to make this easy for you to use. So when you’re just doing your job as a developer, you don’t have to worry about these.
Pretty pictures I’ve drawn for you and I’ll show you of what we did. Thank You. Dylan security is absolutely top of mind for us. While crafting the Linux experience on Chromebooks, we came up with three high-level design goals. The first goal was to keep your experience intuitive. Everyone here in this room has been using computers for a long time and you have just established your workflows and habits.
So, basically, what we wanted to do is to match to those those expectations. We wanted to provide an experience, that’s natural to you. We want developers everywhere to be using Chromebooks and feel right at home doing it. The second goal was to make your experience native. We could have taken the easy path by giving you a full Linux desktop in a VM, but that wasn’t good enough. Our goal was to bring the Linux apps.
You depend on for development into your native Chrome, OS experience. The third goal was to make your experience simple, and I think this is very important. There’s a lot of complexity, that’s going on under the hood, and we want to leave it there. Our guiding principle is that complexity shouldn’t interfere with the user experience. There’s a couple of things. We are trying to balance here. The security concerns that come with installing Linux apps on Chromebooks and the simplicity that comes with sticking to design patterns established by Chrome, OS and our mission was to find that sweet spot all right.
So now we’re going to talk about three common developer flows and see how they work with crusting. The first of these is accessing files as developers. We have to do this all the time our editors need to access files, as do our compilers, our source control and a whole lot more, but the problem is that our file systems have a lot more than just code. They have our personal photos, our tax returns.
Maybe that novel that you’ve been working on a lot can go wrong. Ransomware can hold all of that data hostage. Malware can upload your files to some rain server, or maybe you just get something that goes and deletes everything for the fun of it. We built crostini with those threats in mind to limit what can go wrong and Dylan will tell you how so our goal, sharing files with your VM and with your container, was to make it easy for you to get the files you needed for your development tasks.
Where you need them, but not expose things, you don’t want exposed to untrusted code, because ultimately we don’t trust the code. That’s running inside this VM. To do this, we took a layered approach, your files all live in Chrome OS at the very bottom, and we share them out to the VM with a 9p server. We named it 9s again. We wrote it in rust, so it’s memory safe. We fuzzed it to make sure unexpected inputs, don’t cause unexpected behavior and we put it in a in a tight jail.
So it can access only the files you share with it and it takes those files and exports them to the VM. The VM mounts the 9p thing, that’s built into Linux and then lxd takes that mount and exposes it into your container, where your development tools are running. The important thing here is that your container can only see files. You say I want to share with my development environment. Your VM can only see those same files and even the server that we wrote running on Chrome OS can only see those files.
It doesn’t get to see everything. So somebody exploits this stack all the way back into Chrome OS. They still don’t have access to the files you haven’t shared with the container. That’s a lot of stuff to set up setting up 9 P mounts bind mounting things into containers. We had to do this manually for a while. We were developing it. It was painful, so let’s do to show you how easy we made it for you.
There are a lot of layers going on, but let’s see how simple this is in the UI right out of the box, you have a directory called Linux files, which is your home directory within Linux. Anything in this directory is automatically shared with Linux. Outside of this directory anywhere else on the device, Linux doesn’t have access to anything until you grant permissions I’ll walk you through a couple of examples here, let’s say you’re working on a project, and you see yourself needing files from this.
One folder called illustrations to share this: all you have to do is access the right-click menu and click on share with Linux. In as simple as two steps, you now share this folder with Linux. If you notice, this is in Google Drive and that’s a cool thing when you don’t want to share this anymore, you can do that by going to settings and unshare here’s another example where we made quick edits, really simple for you.
You have a data file in your downloads folder and when you double-click it automatically opens in vs code when this happens in the background it’s implicitly shared and the sharing last until you restart. This is the balance of security and simplicity. We wanted to bring you. Thank you so, for our second developer flow that we’re going to talk about we’re going to look at running a web server. Now being Chrome OS.
We care a lot about people making great web apps and we want to make sure that they can create those on a Chromebook and being able to run a web server is pretty central to being able to build any web app. Unfortunately, web servers also need a pretty low level of access, and that can cause some problems. The code that can run a web server is also capable of snooping on your internet traffic. It can know what sites you’re accessing and, in some cases, even see the contents of those pages.
This means that a malicious web server could potentially track everything that you’re doing now again, we thought of this as we design crostini, and we made sure that we prevented this kind of attack. Linux Dylan will tell you how I can be called Linux. It’s my job. All right so starting a web server from crostini, simple we’ve got a good demo over in the web, dev sandbox already type of command. You fire up your web server, just like you would on any Linux distribution out there what’s actually happening under.
The hood, though, is you’re in a container, and you open up a port that ports in a network namespace inside a VM running under our special hypervisor, which puts its network stack in another namespace on the host and then finally out to Chrome, so Chrome can’t get Back in which is great for security, you’ve got wonderful isolation, but if I want to test this new PWA or webpage, I’m running in my VM, how do I get chrome to talk to it? This was not simple.
So for that we had to add some demons along the way. Actually, every layer gets a daemon for this there’s the first one is running in the in the VM and it’s sitting there waiting to check if any container that’s running happens to open a port, and then it’s got to figure out which container open that port and Bundles that information up sends it to Chrome OS, so hey this port in this container is listening.
The user might want to use that port and on the Chrome, OS side we say – ok, the other daemon responds says I will set up a route to do some forwarding I’m going to forward all of this over Vee sock, which is a protocol used to talk To local VMS, on on machines, that’s kept under the hood, so either end talks HTTP in in to the demons and the daemons dog Vee sock to each other. So the key here is that the web server gets to talk.
Http Chrome gets to talk, HTTP everything’s, normal everything works. Just like you would well under the hood. We’ve got all this extra daemons and V sock forwarding going, but we’ve hidden that one other important thing we’ve made it trusted. So you can get all your PWA features. You can install it to your desktop, even though it’s not technically the same machine. We know it is because we’ve got the information we set up the VM, so we allow that to be trusted domain and all this complexity, I think, makes one of our best demos.
Today of how complicated we made it under the hood and how simple you’re going to see it is to actually use. I totally agree that this is very complicated under the hood, but in the UI it’s exactly like you would expect it to be. Let’s say: you’re experimenting with building this cool PWA here in terminal you’re in your folder pwe, a starter kit, you’re running a commands to start your web server and if you see at the bottom of this screen, it’s listening at port 8080.
At this point, you can launch your browser, go to localhost 8080 and test your web app on the screen here on the left. You have your web app in Chrome and on the right if you’re noticing it it’s in Chrome. Yes, you can test your web app on a Chromebook in Firefox too, if you noticed, we did not prompt you to give any permissions while we were in this flow. This is because the host is accessing the VM and not the other way around again.
This is another way we kind of balanced the security and simplicity factor. We were talking about all right for finally for our third demo, we’re going to talk about testing an Android app now this is really exciting, because just yesterday we announced that Android studio is officially supported on Chromebooks and we even created an installer just for Chrome OS To make it really easy to get started with now, of course, Android studio isn’t the only thing that you need in order to build a great Android app.
You also need something to test that app on usually a phone and well. You could do that over Wi-Fi with ADB remote all this sort of stuff. We wanted to make it easy, just the experience that you’d expect on any other vice. I can plug my phone in over USB and test my app that way. Now, if I’m an Android developer, sure I’ll plug my phone in to test my app, but I’m also going to plug in a lot of other devices over USB over the course of my day, I’m a plug in a USB Drive that has a lot of family Photos on it, I’m a plug in a wearable that has some health information I may even plug in my security key for work.
That gives me all of my access. Malware can take advantage of these devices to uniquely identify you as you move between machines to spread itself or even to make changes to them again. We thought of these threats at when designing crostini and made sure that we were preventing them. Implementing USB was a lot of fun, for us might have been our most painful stack same principles. Apply, we’ve got our layers, we protect the host there’s a lot of attack surface in a hosts USB stack to very complicated kind of loosely spec to protocol.
It’s an exact spec, that’s loosely implemented by a lot of people, so we’ve hidden that kept that on the host side wrote a device that we live in cross VM jail again, we’ve got a USB driver, it’s pretty complicated. It’s got a lot of code in it. I’r sure there’s a bug or two, so we made sure it was very well isolated. It can’t get to your files, they can’t get to the network, it also can’t get to any USB device.
You have to explicitly say hey. I want to give this USB device to my development environment. We’ve tried to make that as easy as possible and what actually happens under the hood. We’ve always got an emulated USB bus running so that the guest always sees hey. I’ve got a USB bus. There’s nothing plugged in and once you indicate that I want to give this to my VM, it says: ok, I’m going to add this device to this bus and then we show it to the guest and then the guest again in turn, has to forward that into The container and the container can see it there’s two things we were really focused on here.
One was security: again we dressed that with the jail, and we made sure the attack surface was as minimal as possible. It’s also written in rust and it’s nice and memory safe and it’s fuzz. But the other issue here is its privacy, because people somehow use lists of USB devices attached to machines to fingerprint and track users, and we wanted to make sure the untrusted code running inside the container couldn’t be another way to do that again.
This is a lot of steps. We have to create a device, we have to export it to a VM. We have to export it to a container. We have to decide which device to export and not and again we’ll have a demo that shows how easy it is. Okay, what this is the last demo, let’s say: I’m on my Linux and Abel Chromebook and you’re plugging in your phone you’ll see a notification that prompts you to connect to Linux.
At this point, only Chrome OS has knowledge of your phone. Linux doesn’t even know that your phone exists and that’s a good thing. If you see here, your phone is not listed in the USB list, but when you rerun the command once you connect on the notification, your phone shows up in the list. At this point, you established access to Linux to your phone. Let’s say: you’re working on a project, you’re developing a cool app again in Android studio and you’re, ready to test it out.
You hit, run and select the phone and boom just like that. You’re able to test your phone test, your app on your phone at this point you can debug and test out your app. Finally, you can go to settings and manage what Linux access to at any point of time. So you can see how security is at the core of your Linux experience on Chromebooks you, the user, are in full control at all times of what linux has access to.
We take advantage of a variety of UX patterns to make it simple to use and also native to Chrome OS. The combination of principles of Chrome, OS and crostini make this experience pretty unique thanks. My turn all right good. We got plenty of time, so we’ve been talking about a lot of details and I’ve been talking a lot about layers and jails and all that’s important and it’s a good reason for you to trust our normal flows and at when I’m using my Chromebook.
I almost always stay within these common workflows that we’ve polished and made sure work. However, a lot of that technical detail I was talking about is still usable and we’ve left hooks in for you to play with it. So I’m glad I’ve got time left. So I can go through a few of these examples and kind of just wait. Your appetite for what else you can do. We don’t test this stuff. We don’t support this stuff.
We really want the standard flow to be enough for everybody, but every once in a while there might be a reason you want to do something a little more advanced or you know you might just want to go, have fun and play with things under the hood. We’re tinkerers right supposed to be so we’ll go through and show how some of this stuff works. All this is going to be from the Chrome, OS shell. This has been in Chrome OS since longer than I have and so ctrl alt T gets you a shell.
There’s a set of debug commands. You can run we’re going to focus on one command, which is the the VMC command that we added to control virtual machines and containers the basic command. You can do a VM C list. It’ll show you what VMs you have installed on your system. I, the default VM, is called termina, so hopefully the fonts big enough and you can see what size it is. The terminal VM is the one that all the demos were done for the slides before.
So it’s up and running, we’ve made a shortcut to enter a container inside of yem. So if you want to go into the default container, the containers name penguin again, that’s that’s where we were doing all these demos from so the there’s, a BMC container command to get you into there will pop out of there and then we’ll pop back into just The VM so VMC start enters your virtual machine without entering your container.
So if you go back to my layers, it’s the one in the middle. The thing that LXDE runs in – and the reason you want to be in here is if you want to manipulate or change containers, so I mentioned we used lxd, there’s going to be a lot of LXE commands, that’s the lxd control program. This is well documented online and most of it will work inside Chrome OS, just like it does on a default. It want to install the first one you can do is a list you can see, we’ve got penguin running, we have one container it’s up and running.
It’s got an IP address, so we’ve got our one container. We might want to play with it a little bit and before we do, maybe I want to make sure I can get back to a state where I know it’s good right, because I’ve broken them before. It’s nice to be able to just go back to where I was and play around without worrying, so standard LXE command, it’s called snapshot and you give it your container name and you can give it the name of your snapshot and now you’ve got an image saved.
That you can go back to if you break things, there’s a copy on right. We use butter FS in the VM, so you’re not eating up a ton of disk space. We can get info on our container. This gives a bunch of information. Again, you can go poke around with this on a Chromebook. If you want to the important bit here, is that we’ve got one snapshot at the bottom, the i/o one snapshot we just created, you can have multiple snapshots.
It’s got a date on it to help. You remember if you didn’t use a very creative name and then, when you want to restore it back, Alex see restore these are well-named commands. They did a better job with this than I did. If you really want to go and play with different things, sometimes you want more than one container, so I’ve got my penguin container and I’m going to go say, install some different libraries in this one.
Maybe I want to have a container. That’s got Python two seven and a different one. That’s got Python three or maybe I want a different container for writing. Go then the container I have for writing rust. So we let you do that you can create as many containers as you want disk space limited. These do do cost this space. The most basic way to start off a new container is to copy an existing one. There’s an LXE copy command.
The example up here copies the the default penguin container over to a new container named Kingfisher. You can list the containers. We’ve got two by default: containers are stopped, so we have to start them now. We can list two there it’s running and you can jump in you say hey. I want to run bash in Kingfisher and now I’ve got a shell in my new container and I can go off and install whatever random toolchain.
I didn’t want in my default container, taking that one step further. We chose Debian because it was kind of the easiest thing for us to do. We didn’t want to tie you down to that, though. We support the Debian workflow. We support some guest packages that are installed in Debian by default, but some people want to use their favorite distro and there is a huge amount of distres available from the image server.
That canonical runs will install an arch one here, I’m not I’m not an arch guy. I don’t really know much about arch, but some of my co-workers talked me into doing this and playing with it. So now you can see, we’ve got three containers and I’ve got two Debian containers, my penguin and my Kingfisher, and now I’ve got something called arch test and again I can enter it by telling it to run bash, and if I want to install packages in this One I’ll use pac-man instead of app it’s actually it’s actually arch.
I promise that’s just a taste of what you can do from here. If you go and look at the LXE and lxd documentation online, you can get some more ideas, there’s even some help online about installing other ones and getting them to integrate better with the GUI. If you want more than just a command line, all right, so Dillon just showed you a bunch of the really cool tricks you can do with crostini. When you go under the hood and if you’re interested in this kind of thing, we really recommend checking out the crostini subreddit.
The folks they’re buying features as soon as we release them, sometimes even sooner and they’re, also really welcoming to new users of Linux on Chromebooks. So if you have any questions, please check it out and a big thanks to the folks there. So that’s Linux. On Chromebooks, as you can see, we already support a lot of web and Android developer flows and there’s a lot more to come, both in supporting other developers and in expanding what we can do with new capabilities like multiple containers and backup and restore we’re going to Keep applying these principles of simplicity and security to give you the best developer experience possible whenever you’re ready, we hope you’ll join us.