Hi everybody more to this side. Okay wait. I'll move my computer then. Hi everybody. I Challenge you the go community to end fix solve once and for all The discrimination and under representation of women people of color People with disabilities LGBTQIA Anybody Within one year That's all you get one year Is it achievable? I Think so I Intend to show you that it's it probably is if we moved the conversation to a more pragmatic To for more pragmatic solutions discuss the how instead of the if Why a year Because when you want to get something done You set a deadline Don't like my deadline Set your own, but then you have to make it Because we're not likely to discover anything new next year About this topic So why not just do something now? So a little bit about me. I'm Rona and I organize women who go Berlin. I also I also organize various scholarship programs for go bridge I run my own mentoring program and I'm mainly an engineer and I love people opinions code and data So naturally because before giving this talk I check to see what kind of impact I can expect from my own call to action According to science Only 10% of you are likely to take action after hearing my talk To those 10% Thank you You're actually all I need If you implement some of the solutions that I'm going to lay out today or even come up with your own Other companies will take notice So thank you very much in advance To the remaining 90% I Made that number up. So you have no excuse Don't listen to people who say according to science. So why do I do what I do in my entire career? It's been 16 years. I reported to a woman Exactly once for a few months directly For a few months in 2004 It's been almost 16 years And as I become more and more senior it's likely to never happen for me again unless I go work for a very large company anybody hiring And get very lucky And this is what that looks like in a graph. I call this work of art the flat line I can therefore summarize Mathematicians I Can therefore summarize my biggest concern with the tech world, especially startups back-end and ops with really that's where the glass ceiling is Tech lead team lead the most junior leadership positions Well, it turns out that the glass ceiling is even lower than that According to hacker ranks a woman women's report from 2018 women are by far like clear to be in junior position than men Women as a gender I statistically stuck in junior positions Some are truly stuck as juniors are not promoted not trained or promoted very slowly Combined with a very very serious retention problem where women across all levels are constantly living tech In fact according to a survey from November 2018 from indeed The leading reasons for women to leave tech war lack of career growth poor management So so slow salary growth lack of challenge if you can believe that and Lack of work-life balance now. This is a multiple selections as you can see it adds to more than 100% so lack of work-life balance was actually expected to be higher on the list and This is surprising now if you take all of those items we can do something about everything on it So I can share countless stories to explain how we got to this point And I have research is coming out of my ears, but I only have 25 minutes Sorry a call for papers committee for having to review my paper with all the data that I have on this topic So I want to focus instead today on one message That like you I'm in the business of solving problems and this is one that we can solve I Am after all an engineer and this is what I do for a living So we can still have it using the same methodologies that we used to solve everything else It's simple to understand. It's simple to break down We can experiment and monitor our progress and all what what else does a good troubleshooter actually need So why am I coming to you with this simple the go community is modern As a community we've set aside paradigms that have shaped programming for three plus decades Change our perspective and adapt it to a new way of doing things We are not here to serve the language the language is there to serve us So that makes me wonder why why our variables deserve a safe space But our underrepresented groups don't and what would happen if we treated ourselves as seriously as we treat our code So let's examine the current state of diversity in the go community This statistic I took from the from the Stack Overflows Survey of 2019 I selected the responders that worked with go in the past year and This is their gender breakdown and this is the breakdown of their ethnicities and I remind you This is a global survey in Europe. The situation is a lot more dire I couldn't bring myself to bring you the situation in the EU because I couldn't take away United Kingdom just yet I just decided not to So a disclaimer most of my talk is going to be based on data About women about the underrepresentation of women in tech I'd love to be able to talk more about the realities that other groups face But sadly, there's just not enough data on that I believe that some of the information that I'm going to lay out today is relevant to them as well So on a side note I also want to point out something that I think is not addressed enough diversity is not equality and A diverse theme is not necessarily an equal opportunity team And I think it goes through the core of the problem where people do not want to be the tokens of our diversity So let's break down the problem women live tech While we're pursuing engineers Whose problem is it? Well, it's very easy to think that it's my problem or people who care, you know The ideologists the activists, but I argue it's our problem as a community first because we're business-driven and Currently we're paying recruiters a fortune When there's probably available talent How do we know there's available talent depending on where you live 60 to 80 percent of the population is not represented is not participating it's the vast majority of course there's talent and Second because diversity is reported to increase Individual success while improving creativity and eventual growth. So at the very least we're not benefiting there So now that we understand the problem Let's fix it. What were to happen if we were to create a Trello card? For diversity and added to our tasks What would that Trello card look like? The reason I'm turning this into a Trello card is because if any of our products was failing with women and minorities or with the vast majority of the population We would have Solutions with a B tests in production within a month There is no way that we would let this go except we do have a failing product It just happens to be the positions that we cannot fill So we are very very we should be very incentivized to fix this once and for all So let's start with the biggest funnel. Everybody complains. They don't get CVs from women They are simply not applying And you've probably heard about this one a highly quoted HP internals research Has reported that women apply to jobs only if they meet 100% of the criteria versus men with only 60% of the criteria. I'm happy to call BS First a little bit background. This is known as the confidence gap Between men and women and it's amazing because HP apparently were able to put a number on the difference on the confidence gap 40% 40% in massive right might as well be 100% So I'm happy to inform you that this statistics is probably not scientific first there is no 100% in any Real serious research. It just doesn't exist to If the HP research even exists It has never been published anywhere We don't know who conducted it. We don't know what they asked. We don't know who they asked and We don't know if it was peer reviewed. We know nothing about it except it went viral So please do not continue Telling everybody about this. Okay However, there seems to be some consensus in the industry the women truly don't apply as easily to jobs as men and there have been real studies for instance the one that was That was done was conducted by Dannings and Ehrlinger the same dining from the Kruger dining effect. If you're familiar And they asked men and women to guess how much they scored in a test and women did underestimate Their scores more than men So a woman named Tara Sophia Moore decided to ask men and women if you decided not to apply for a job because you didn't meet all the Qualifications, why didn't you apply and her results were probably more published on Harvard Business Review and they are interesting She gave them five options to choose from not all of them are important So I'm just gonna read them quickly. I don't think you they would I didn't think they would hire me And I didn't and I didn't want to waste my time and energy I didn't think they weren't hire me and I didn't want to put myself out there in case I fail I Was being respectful of the time and preferences of the person Reviewing applications they had already made clear who they were looking for and I didn't think I could do the job Well, I was following the guidelines about who should apply So very good news the least common answer for women Was that they didn't think they could do the job? Well, that is not why they didn't apply or at least not the leading reason Why they didn't apply? It was similar to men 12.4 percent, but lower we can rejoice in that so More explains People who weren't applying believe they needed the qualifications not to do the job Well, but to be hired in the first place. They thought that they required qualifications were well required So now to be completely fair we cannot say for sure that they thought they could do that were confident They could do the job. Well, but it is not the reason why they're not applying And in a troubleshooting world more is right This is a lead and we can try and poke it and see what kind of results we can get from it So I propose a few solutions Eliminate everything that can be learned in two days or even a week. It probably doesn't matter And if the applicants don't know the technology, they don't know how easy it is to learn Why not experiment? post multiple ads with multiple profiles and see who applies to what At some point you've accumulated a bunch of CVs not all of them meet 100% of your criteria Look at the least common denominator of the applicants that you're currently considering It's probably the profile you're seeking anyway and repost the ad And you should probably rethink all the superlatives killer programmer is pretty obvious But what about ninja or rock star instead of we're hiring the best Why not we'll turn you into the best and while we're on the topic of confidence It's being addressed this proportionately Imposter syndrome the self-doubt all of these are well documented and discussed very often But I have not find found a single research Showing that if they applied that actually get the job So what if women statistically are not likely to get the job with the infamous 60% of the criteria What if women What if when a woman asks for a salary similar to a man's She wouldn't get the job in the first place So I know we all think that we're the one good employer that doesn't discriminate But how is she supposed to know that and in advance and I'm not the only one saying this Several studies have already shown that women's self-promotion is tied to fear of backlash for over-confidence over confidence So what about degrees most that begin With a with a bachelor's degree qualification and there's a real problem with that We know there's discrimination in education system towards all underrepresented groups mainly people of color women LGBTQ Everybody campuses are not famous for being particularly safe and Young girls are silent are silenced in classes worldwide. This is a worldwide phenomena So if we were to consider everything that we're doing we might want to look into that one as well and Finally since women leave tech in masses if we're actively looking for a senior. We're not likely to To even get CVs from underrepresented groups And we're not likely to recruit them in the end So the statistics is just not on our side and it's impossible that everybody only hire seniors 100% of the time So I challenge you then to do one additional thing every time you say go is simple hire a junior So next on our Trello card is defining goals to our recruiters Especially if you're using external recruiters You must set some expectations. I'll explain External recruiters are paid in margin if they think Then a man is likely to get a job. They will send you men if they think That a man is likely to be paid better. They will send you men So we must create an incentive for them to encourage diversity And whether you're using internal or external recruiters you can define some quotas on the amounts of CVs that you're expecting And this will allow you to also see what kind of CVs were being passed over so far So back to our Trello card Go to meet-ups find your applicants where they are When I started organizing women who go Berlin, I didn't wait for people to come I went everywhere women who code women tech makers get carried girls And I unlike you didn't have money to offer them to learn go So you can be more more convincing And I got this question a lot Rona we love what you're doing How can we support you better? Hire my goddamn members. That's how so next on our list is coding challenges and they started as With the thought that you might overlook someone because they don't have the experience you're looking for So they were supposed to be a way to allow applicants to surprise you and it's a fine idea. It really is However companies are now sending out challenges that take days or even weeks to complete and we need to revise this process Here's why and this is true to probably all parents, but especially women and especially to mothers with babies a Young working mother can maybe allocate four to five hours a week to complete a challenge and She's probably applying to other places as well So if you're sending so if your challenge cannot be complete within four to five hours And I mean four to five hours not sprint points not t-shirt sizes Five four to five hours. You've probably no business sending it to anyone But I'll take it a step further because now you're telling yourself few hours takes only two hours to complete If you're setting out the challenge with the expectation that you're going to hire the person whose solution standouts stands out that is a function of time and resources and Our young working mother again cannot compete so This is where we implicitly prefer young people younger people with no commitments So consider this people are likely to have children after spending a few years in the industry after have been built a career So we might be eliminating people with the primes of their careers Our next item is of course retention. Let's retain our hires Because otherwise we didn't achieve anything Code reviews are a great way to build and destroy trust between colleagues so make sure to have constructive code review process and This one is really important training education budget and conferences So we see this everywhere conferences constantly have to allocate diversity tickets to underrepresented groups and then people like me distribute them Set a clear budget and let's learn your employees decide how they are going to spend it Finally define a clear path to promotion Give your employees a sense of opportunity create the mentoring program in your organization Scheduled performance evaluation scheduled races races. You don't have to wait to be asked if you value your employees And consider also anonymizing the CV process and your coding challenges if you choose to keep them and Let's talk about the thumbs up process Over the past 15 years companies have been making interview processes Harder and longer and if you if before you would interview with Two maybe three people today. You're likely to be interviewed by at least four to six people And they all have to give the thumbs up But we just doubled the chances that one of your interviewers is biased So finally people should feel safe at work Physically and emotionally if you have any kind of bullying at work On any background any background and it is inexcusable figure it out And here's the promised Trello card with all of the ideas. I just explained This is not everything you might come up with your own ideas And if you do please share them back with me Share it we tell your friends your recruiters and your managers be brave and thank you very much Cool, so we have some time for questions. So any questions in the audience? You're really far Thank you for coming this way. Yes Hi, so first a short disclaimer like I'm white sis and a man So I'm obviously very privileged to even talk about anything in this subject. I don't consider myself a particular Defender of the cause, but I try to help whenever I can And one thing that come up pretty often for me is that whenever I start in a discussion in this area It's like it's very hard to to point out what problem you're trying to solve like why is it a problem? Like I kind of see it for me, but it's really hard for me to take to convince someone that just shrugs and said Yeah, why is it my problem? I should even care, right? So do you have any like short and to-the-point arguments that could help me and when I'm in this sort of discussion to say Look, this is something that we should try to solve if even if we're like very privileged position and don't see it as a day-to-day problem Well wonder is the recruitment So I can tell you that I mentored about a hundred people to date and they're all incredibly talented And I'm enjoying a select in what's called a select or selection bias Where all the people who are brave enough to come to me and ask for help are incredibly talented and probably could make it on their own So think about this if you started your own mentoring program, you could probably hire 100 people tomorrow That would be incredibly talented and very very good. That is one To my first job was actually and this was 2003 was I was doing C++ and at some point We were a majority of women to me It's a no-brainer because I know what that workplace look like and it was quite amazing And I mean I understand that people speak from experience and do not understand what a diverse Workplaces and therefore do not understand necessarily the necessity They will just figure it out along the way because it is nicer. It is just nicer For the people in the back we can hear you perfectly from here Thanks So most of the the things you mentioned are about the hiring process But you didn't say a lot about actually the education problem, right? There are a lot less women actually studying computer science and such can you elaborate about that, please? So this this changes from country to country and But we see worldwide a worldwide friend that the women do sign up less Those are Those studies are also hard to get to and if you are Okay, a curious thing like do I have how long do I have okay? Have one minute. I have one minute Yes, one minute. Okay. I'll try to make it short in my country in my home country I come from Israel. There's something called a psychometry. It's an internal. It's an it's a when you try to enter the The university you have to do that. It weighs 50% of the score that is actually going to send you to the university Women do pretty well for 12 years in my own country Do it pretty well and do way better and have better grades than men during the 12 years men do better on the psychometric exam Why 50% I'm always puzzled like why not 40% why not 80% if you're sure that it's really that important or it's more important Or it's as important as 12 years of rates. Why not that those things are so arbitrary that we don't even see them That's the answer basically We need to poke at to every every step of the way and understand what decisions we've made and Nobody's ever going to change yet, you know Nobody this is not even nobody's thinking about these things That's the problem, and I'm just gonna go away now because I'm being picked out Thanks so much


I think National Volunteer Week is an awesome week to be able to celebrate what we do and celebrate the role that we get to play in our local community. I wish that I could have joined CFA years before I did. I wish that I knew about it years before I did because it's been the best decision that I made. Being able to give back to the community and get to know the people that are in our community as well has been such a good decision for me. And if you're considering being a volunteer then I strongly urge that you do it because you won't regret it. My name is Georgie MacDonald. I'm 27 years old. I have been a volunteer with the CFA for six years and I'm at the Jovana Fire Brigade as the third lieutenant. I chose to become a volunteer at a point in my life where I wasn't studying. I was working casually. I had a lot of free time and wanted something that I could do that would give back positively to the community and something that I could be passionate about. As well as going to the regular calls that we do go to, I've been able to build on my own confidence and also learn a whole range of new skills. A lot of which I never thought I'd ever be capable of doing. Things like growing breathing apparatus, performing road accident rescue, becoming an officer of this brigade was a really big achievement for me. It's something that six years ago I don't know if I would have imagined happening but I'm really proud to be able to hold that role and hopefully I'm doing a good job. The biggest challenge that I've found with being a volunteer has probably been my own self-doubt or thinking that maybe I couldn't do particular tasks. It's always been really good though to prove myself wrong or to achieve things that I didn't think I'd ever be able to achieve. Some of the scenarios and some of the incidents that we attend are not very nice but the support that we get from the CFA, from our own brigade and friends and family makes up for that. It can be quite tough missing out on different events and feeling like you're missing out a little bit but overall it's been such a positive for me. I'm really lucky that my family and friends are really supportive and proud of what I do so they're always really understanding.


So you want to see what a variable is doing during runtime, not a problem. Now if you're coming from unity, this will seem a little confusing because you're probably used to be able to see all the public variables during runtime in the inspector by default. But to get this level of insight in Unreal, you have to go through quite a few hoops. So let's say you have a variable in your UI menu, and you want to see that value change during gameplay. Well, first run the game, then up here under no debug objects selected pick the name of your blueprint. And now from this point in the graph editor, if you hover your mouse over a variable node, you can see what that value is doing. But that's not really what you're looking for. In order to see a basic list of variables, the way we do in unity, you have to go up to debug, then blueprint debugger. And now if you drop down these values, eventually you will find a list of all your variables and be able to see what their values are. It's kind of a lot of work just to see what's going on. But hey, that's just how things are here in Unreal. So probably best to get used to it. Either way, if anyone has a better solution, I would love to hear in the comments down below. And as always, hope you have a fantastic day and I'll see you around.


My name is Suresh. I'm also working for a property guru. And my talk today is going to be about status of server-side Swift. So, just one second let me bring something here. I think you need to close something. Okay. So, why Swift has the potential to be a cool language for server-side programming? These are the reasons why it is cool. Why nobody talked about Objective-C being a potentially server-side programming language. And we're going to talk about Swift Package Manager, how to contribute to it. I will talk a little bit about some of the existing server-side frameworks like Perfect, Kutura, Vapor. And then the most cool thing, we are going to try to do a live demo. If you want to write your own framework, say there are Perfect, there are Vapor. But say, no, it's new. I'm going to write my own. How can we get started? So, we'll do a demo of that. So, why Swift has a server-side language? Since they went open source last year, I think Swift was announced like two years ago. And since they went open source, they have more than 2,000 stars. And the community is growing. There are more than 800 repos on GitHub with 100 plus stars. And every day, there are a lot of projects being put into the GitHub. So, the community is really growing. People are also a lot of interest. And if you write the server-side in Swift, you will have the same language for front-end and back-end. So, you can reuse a lot of models and logic. So, that's the advantage. And then, other than that, Swift has some cool language features. Like, of course, it is the first-class language. Good, very strong type. Compile time error checking. Some of the features of the functional language like MapReduce, Flatmap. We have that. Learning curve actually is quite easy. And then, moving from, if you are an Objective-C programmer, moving from Objective-C to Swift is actually pretty smooth. So, there are a lot of good reasons for us to explore this. All right. So, Swift Package Manager. Before I go deep into Swift Package Manager, there are some online resources that I'd like you guys to go back and watch. This guy, Honza, I think he contributes a lot in the open Swift community. He has contributed a little bit to the vapor framework as well. He talks in more detail about how to use Swift Package Manager, how to maintain the dependencies, and how to contribute. And then, Jesse's class, I think, is also a very famous name in the open Swift community. Also, a very good talk about how you can contribute to the open Swift. All right. So, the official documentation says, Swift Package Manager is a tool for managing the distribution of Swift code. It is integrated with the Swift build system to automate the process of downloading, compiling, and linking the dependencies. So, what exactly it is? It is a dependency manager. All of us are using a cooker pod or cartridge, right? So, it will help you do that one. On top of that, it's a build tool. It can actually, since Swift went open source, you can use it in Linux framework also. And you can use Swift Package to build your project, to test it. It's command-line-based, cross-platform, Linux as well as Mac, and then it's decentralized. So, this picture shows this command that is available as of right now in Swift Package. If you put Swift Package in there, if you are using Swift version 3, it will say there are some functions like Initialize. Init, Fade, Update, which will try to update your dependencies, download from the GitHub, and then put the dependencies in your project. It can also help you generate an extra project, which is very useful if you are a fan of Xcode. Apparently, not many people in the open source community. They are, because I've seen people already starting to write in Sublime, Veeam, cool. So, yeah. And so this is the structure of the Swift Package Manager. Once you generate, once you hit Initialize, it will create a, this is like, this is what will be generated. You have packages that Swift, you have sources folder where you will have a placeholder file, test server that Swift, for example, this package was called test server. And then you have some test files as well. And your package, the package that Swift file looks like this package, and then the name. If you want to add dependencies or linkage with certain targets, you would specify there, which has, it has some rules, some convention. I think if you go back and watch that talk by Honza, he will give you a better understanding of how it is done.  If you are, because Swift 3 is not officially released yet, even though I think July 29th or 20th is the final day of the evolution, after that any changes will go to Swift 4.0. So before like, I mean, until Swift 3.0 is officially out, you can use Swift version manager to actually manage the versions of the Swift. So it works a little bit like the Ruby environment. You can install using brew, that command. And then these are the options available. It can display what are all the options, Swift versions available using the versions command. And then you can like, set it up to a directory level by saying, okay, Swift ENB and then local, and then use 3.0 or some snapshot of Swift 3.0. And then for that directory onwards, it will always be diverse on the Swift. If you don't want this, then you can just change back. Pretty cool too. In our live demo, we're going to show how it is done. So this start from GitLogs. So these are the top existing frameworks. If you search for language, Swift and topic server, these five are the top one. Everybody heard about Profect and Kittura and the priority paper. So we'll just give an example of Hello World in these top three languages, how it is done in Perfect, Vapor and Kittura. I think Perfect started even before Swift went open source. And these guys were saying once and when Swift does go open source, people will start writing server-side language in Swift. And then we are going to be the number one tool when that happens. And apparently, I don't know if that is the case right now, even though they have the most trust, but I think Vapor is catching up. I think they started with two guys from Canada, and then there was a company who sponsored them, saying, okay, you guys keep writing, we'll give you money. And then they got those guys kept going. So you have to write a global function called this Perfect server model. You have to initialize it. And then you define your request handler, in this case, Hello World handler. And then this request handler will have a method called handleRequest. So whenever request calls, everyone will handle it. Once you define your routing there, in our case, it's slash.  So when you use this route slash, you need to return Hello World. In Vapor, it's very concise and even easier to read. Call it Droplet. It's more like a routing server.  It has a callback with request. Now the request will only return Hello World. You can return it from the string, JSON, or even the HTML views or whatever you like. Vapor, I think, they have in the GitHub, it's called Qfiori. And if you go, they have one very cool thing is they have this OpenSwift. In OpenSwift, they have a few projects like S4, a lot of things. The main reason is they want to set some standards for OpenSwift server community. So even if you are writing your own framework, there are certain standards that you don't want to rewrite again.  So it's a very, very cool resource. You can go back and check. It's called OpenSwift. And Qtura are initialized by IBM. I think they were inspired by Express.js. And they also invested in the company was doing the Express.js. So if you are very familiar with Express.js, the Qtura framework will sound very familiar to you too. It was pretty similar to Vapor. You create a router and then you define what you want to do for certain endpoints on router. And then you start the HTTP server on port and run. So a simple example of how the hello world is done in three frameworks. Now, writing your own framework. Why? You ask the question why you want to write your own framework. There are so many other languages. Well, the thing is, Swift is still pretty new and then there is not a clear winner yet, right? There's Vapor. There's Perfect. But I don't think anybody can say, okay, we are going to be the next Express.js or next Ruby on Rails. So you still have a chance. Write your own. And ask your friend to contribute. And then slowly maybe you could do on the top, right? It's cool. So, and then if you actually go and read their codes, you'll find there are a lot of things which are very similar. At the low level, they are all like for HTTP web framework. They are mostly like, they have to deal with socket right here to create socket. Either UDP or TCP socket and then you just make the communication happen. You open the socket code and then wait for the connection to happen. And then you accept the connection and then you send some data and then your client will get it. So I'm going to show you this. We're going to talk about TCP server here. So I'm going to show you the basic flow. I think you might have studied in networking class in university. So in server side, you create a socket. You bind it to address. Then you listen for incoming requests. And then once there is some connection coming from the client, you accept it. All right, you block until the connection from client. So you accept it. And then if you want to read, you read it. If you want to write, you write and then you close. So that's it. Very simple. Just a few steps. The key thing is if you want to do it on your own in Swift, you have to know actually how to access the lower level C API in Swift. Believe me, I'm not a fan of C language. I mean, I did in university, but now when we're using Swift, C feels like wow. So, but actually it's not that difficult. I mean, Swift has made it very easy to actually go back and actually use some of the system APIs. For example, this here in dot C in the C language, you have this function called socket, right? This will create a socket and return your descriptor. It will take in three parameters, domain, type and protocol. So if you want to use this API in Swift, you just have to check, OK, if this is a Linux version, I want to import this G, LIBC, this framework. And if it is a Mac operating system, I want to do it Darwin because this API is available in one of these frameworks depending on the operating system. And then I say this socket, this method, I give it a name for a socket and then for Darwin, this socket. So now in my code, I can just use the socket no matter what my operating system is. So it will look something like this. And if you have like a very repetitive C language that you want to use frequently, instead of like going, writing these if-else and if these things you can actually create a Swift module like a Swift package manager of the existing C. The key is to, you have to edit your model dot model map of the package manager to ask to say which header file you want to put in there. I think the Swift package manager has some example of how to do it. So if you're interested, you can go and have a look at this. I think the link is here. So demo. So we're going to talk about Swift package manager. We'll do, we'll write a TCP socket, TCP server and try to run and do a simple hello world. When the client requests for it, the server will region hello world, okay? So, yeah. All right. So, inside, let me remember it. Simple, simple, simple. We create a framework called Cobra, okay? So let's do it, anything there. So we'll initialize the Swift package manager. Swift package init. So if you, oops, sorry. It didn't work. Why it didn't work? All right, I'll show you. So, I have these three versions, and the current version it is using is 2.2. Since Swift package manager is available only in Swift 3.0 or the snapshots of it, it didn't recognize the command so it didn't do anything. So let's change our Swift versions to 3.0 for this directory only, right? Swift environment local 3.0. Sorry. This is not supposed to happen when you're doing live demo, right? So now, Swift version 3.0. Okay, very good. So, all right. We created this directory. We have package, source, test, all right. Since I want to write in Xcode, I want to create an Xcode project also. So, okay. So it generated an Xcode project. If you look at it, now you have an Xcode project here. So, let me open this. Let me open this using Xcode beta. So, I'm going to write in Swift 3.0. Okay, we're here. All right. So we have this file here. So, let's name these two topics. Since we want to create a topic, just name it, all right? So, you want to import the socket APIs into this file. So, it is... All right. At this point, it is showing... It is saying there might be an error. So, let me try to build this. It will say error. So, this error is... Because this version supports the legacy Swift, which is Swift before 3.0. So, it says you have not set your legacy version yet. So, it doesn't know whether you are using legacy. So, let me go back and then select here and change the legacy to known. So, I'm telling it, so I'm not using the versions before Swift 3.0. All right. So, somehow, if I do not restart my Xcode at this stage, the code sensing will not work. So, I'll just quit it and restart the Xcode. I think we have all seen this. All right. So, now I try to build. It's okay. So, now, we want to import the thing, right? For Linux, we want to import this one. For Mac, we want to import Darwin. Now, we want to create a variable with the same name so that we can use it in the same way for both versions. And for this one, you don't take that one. Later, I'll use some code snippets so it will be faster. This one I want to show you. All right. So, we have this. So, let's define some errors that we might encounter when you are dealing with the server. So, let's define those errors right now. So, this error type was modified to error protocol in Swift 3.0. So, you have this error protocol. So, let's create some error connection time now. I'll paint something like this. And like I showed you in the PowerPoint before, the socket is represented by a descriptor. It's an integer 32 type. So, let's create a type alias for that one. 32 and then 44 is also an integer 16. So, let's create that one also. 16. All right. So, we have this now. Now, let's go ahead and define socket. We are going to define it as a protocol. Let's call it socket. And then we have a variable called descriptor, which is a descriptor type. And we are going to define a function and call it close. This might throw error. Okay. So, let's create a method in this socket. Say, to create a socket. We are not going to pass any parameters here because we want to create the socket in the default setting, meaning localhost using the available code. It will return a descriptor. Okay. So, remind you again, this API, C API, this socket, it takes in three parameters. IP type, whether it's IPv4 or IPv6. The second parameter is the data type. And the third parameter is the protocol type, whether you are using TCP or UDP. So, this is how the C API looks like. So, let's try to create a socket using this one. So, for our case, we have this S socket, right? So, this, if you go to the terminal socket, so you have this function over here. We just use S socket since we have already defined it to be that one. So, we are going to use IPv4 here. In part two, I need, this will represent version four. I need six would be six. So, we are going to use this one here. Stream type, we are going to use socket stream. And then for protocol, we are going to use TCP protocol. Proto, TCP. All right. So, we want to make sure that this descriptor doesn't return error. So, the value should be, sorry, we can minus one. Otherwise, we want it to throw socket error. Now, it should be able to return this descriptor. Okay. But, in reality, when you are creating socket, you have to be, you have to kind of, there are two things you have to do. You have to create socket option to tell that I want to reuse this address when the connection is ongoing. And then you have to, for a MAC operating system, you have to kind of disable socket type error. If you don't, then when you are, for example, if you are running this on iOS, you go to background mode and come back, the connection may drop, and then you get some unwanted exception. So, to disable those, you have to, we'll come back to this one later. So, now we have this method. It will create a socket for you. Okay. Now, let's go back and do these two methods. Create a new file. It's called socket plus points. Sorry. Sorry. The reason is the file is created. Now, to decrease, I'm going to delete. You can create here. Okay. So, I'm going to use the questioning page so that I don't have to type everything. So, I have two methods here. So, socket options. It is asking, okay, for this socket, please reuse the address. And then this one, it will create a process by disabling the supply. The detail, of course, these are available in the CAPS. If you are very interested, actually, this is a very good resource. Nice command. Not very long. Some online resources to read about this how to get going. All right. We have socket now. Now, let's write some functions more specific about TCP socket. Let's go back and create another file called TCP socket. All right. So, it will confirm to this protocol. We have a descriptor. We have a initializing method. We should take... We're making it optional because if you haven't provided a descriptor, means you haven't provided a socket. Remember, in this case, descriptor means a socket, right? If you haven't provided it, it will create a different socket for you. But we have to provide a port. All right. So, type it. So, set the port. So, we have a port available. It's here. And then, if the descriptor is not new, we'll set that as our descriptor. Otherwise, we'll ask it to create new one from the scratch using the method that we defined before. This is socket.createSocket. Since it throws, we'll have to try it here. Since we have tried this, we'll put it like this method can actually throw. Okay. All right. All right. So, this is companion because we haven't implemented the close function that this protocol takes. We'll go back to that. Come back to that later. So, other than that, if you remember the protocol I showed you in the descriptor socket, it has some methods like XS, close, bind, right? Let's write it down. What are the methods? First of all, there's a method called address. Basically, what it does is it will create the address. In your cases, you are going to define the address for your server. In our cases, we are just going to use the default. But this address, this socket has to read in its own format, right? It's a C struct. So, this method will basically take your address like localhost or whatever and convert it into the C address. We'll do that method. And then you have methods like bind. Bind to that address. Listen for connection. Connect. Accept the connection. Send data to that and then find close. Since close is part of our protocol, let's go ahead and implement this first. So, it will just close and then if it can close, it will just close. All right. At this time, you are saying error here because this socket close is a method that I have not embodied here. I will post some of it which are important. All these things. So, here, like we did before in socket here by this one, we are importing some of the C API here and then giving them the same name in the Mac and the Linux so that it can be used with the same name. So, close once and it's done. Let me go ahead and fill out the address. So, it's using the default. So, there is something that is different in the Linux and Mac. So, I have to do this. Bind. It will bind this socket with this address. Listen. This is listening for you coming. This size you can define. It will use the default value. Connect. Again, this is a very basic demo of creating a server in suite. So, there are a lot of cases you have to do different kind of checking. So, you can consider it's a fully functional but it can get restarted. Accept method. So, one thing to note here is in this accept method, when the socket accepts, it will create another socket. It will create another descriptor and give it back. This becomes the client in your PCB server. So, let's go ahead and do that one as well. Just call it tcp server. Okay. All right. It has a port. It's going to create a public initializer. So, what we actually want this server, once you define the server, you want to start the server and then you start, you know, giving the response that you want. So, let's create a function called start. And then you want to return something so that you can append the response in it. So, we'll return our handler with handler. Handler is a callback. We'll define it here. So, let's go here and then define our handler where it will take in tcp socket. It can actually throw it in. So, we'll use this one here. Okay. So, we have this method. Once we start it, it will create the tcp socket, the server socket for you and then start listening for incoming requests. And when it does, when it gets it, it will accept it and then it will return you the new socket that it created after it accepted. Because here, we said the accept method after it accepts it will return another tcp server. So, let's do this on tcp server socket using a descriptor. Since we don't have any, just put it now and use the port here. Server in bind. It will use the default address that we defined before. Start listening for it. All right. Now, let's say it listens and there is a request from the client. So, it has to accept it, right? Let's say the operator would accept. It accepts the request from the client and then we want to return this to the handler. So, the key now here, one important thing to notice is we don't want this connection to fall back. Okay. The server has started and then it accepted the request and then nothing happened. We want the server to, this start method never to end, right? We want it to keep listening to the incoming request. So, we'll create a loop here which will never be wrong. So, what it does is because this is always true, it will never go out of this loop. Since this never goes out of the loop, we'll use this keyword called no return, which we stressed that this method is not supposed to return anything unless some exception happens. Okay. So, at this stage, we are done with creating the basic server. So, let's build and make sure everything is working. Now, we want to test if it is working or not. So, to test, let's create a command line application in Mac. It's called target. Mac OS, which is the command line. This call is Cobra server. All right. So, it will create a command line which has a main flood sweep. If you are writing a script in Swift, this is also, you can create the command line target in Mac OS and then write it here in the main flood sweep. Now, import our modules here. If you get it, we want to print it out. Okay. So, let's create a server. TCP server. Let's say we didn't use this one. Server start. It will give us back the client and then we want to append some message to this client. All right. So, let's say, we want to send it a message say, hello from PG. All right. So, I want to send. Since it is sending an area for this one, we want to convert this message into an array. Bites. Hopefully, everything is working fine. It will be this Cobra build is successful. Let's try to build this one. All right. We have an array. Okay. It will be successful. Let's run it. Okay. So, it looks like our server is up and running right now. Let's test it. It is true. So, let me say, okay, there we have it. Hello from PG. So, we just finished making the server in port edge region. Let's close it. Just to make sure I'm not cheating. Okay. Okay. Let's send another message. Okay. That's it. So, demo is over. So, if you have any questions. No questions? Yeah. Are there any database connections or libraries you said? Yeah. Actually, perfect has come to connect to Mongo, Postgre, and MySQL. If you go back and look at their code, they have a lot of regional developers. Vapor is writing it too. So, yeah. There are already a few of them. Is anybody actually using right? Yeah, actually, I think there are people and we are actually going to use a chemistry demo of XC UI test and Garkin's drive. And then you are using some server written in Objective-C to run the network to mock the network request. Actually, we can use this server for that purpose as well. So, there is a lot of use cases. Even if you are not building a real server, you can use it in your application. Wow. So, when you mock it, you replicate some back-end code? There is a server. What is it called? Yeah, yeah. So, I'm actually using it right now. So, it's not really up to date. So, I think, hopefully, you can actually view all servers to work as a teacher. But I'm thinking if you do permutations or that the logic that you are doing from the server has to apply from the app, right? You have to replicate some business logic code across, right? Yes. Okay. I just want to add, you mentioned Objective-C server, right? Back in the 90s, when Apple had web objects, normally you heard of it. That's where call data came from, right? Interesting. It shows my age, right? Any other questions? Okay. Thank you. Thank you.


If you're Mexican, you know that when the music starts playing in the morning, it's time to clean, my friends. Got the bucket. When the music starts, it's time to clean. But I'm out of here before I get cucked. Mother! I'll be right back! All right, my friends. Good morning. First things first, I have to go take my dad's car. Yes, the one they got a ticket to get like the alignment and stuff. So I have to go do that first, but I forgot the piece of paper. Okay, so I have to go take the car to get aligned and get the wheels tested and all that stuff. And then later on, we are going to Ruido Fest, my friends. Ruido Fest is like one of those hippie festivals. But for like Spanish speaking people, because it's a bunch of Spanish music. And well, I guess it's for everyone, right? Don't discriminate, Coach Javi. Don't discriminate, mate. So it's for everyone, but it's a bunch of like Spanish music for the most part. And we're going to go do that for three days. So that should be fun. Got a few bands that I want to go see. I'm not much of a concert kind of guy, but every once in a while I like to go in. Do something a little different, mate. Do something a little different. So off to the alignment and then we shall continue with our day. So I just dropped off the car. I wasn't sure how long it was going to take. But apparently it's going to take like three hours. So my mom has to come and pick me up because I'm stranded, mate. Stranded in the middle of nowhere. Actually I'm right next to the mall. And I was going to stop by the mall and get some new shades. Ugh, ankles. Because I scratched these bad boys. I was going to go get some new shades at the sunglass hut. Then I took a look at my bank account, mate. And I realized that that's not going to be a possibility. Alright, so my mom's going to pick me up, going back home.  Coach Javi is on a mission to try every single flavor of monster ever created. I haven't seen this bad boy yet, so... There will be an in-depth review coming very, very soon, my friend. Tastes a little bit like candy, mate. A little bit of cherry. A hint of lemon. Just a sprinkle of cinnamon. Tastes pretty good. I'm hiding. Because, like I said, when the music starts, you know it's time to clean. She's out there somewhere. And if she sees me, that means I have to clean. I'm hiding. So, again, I'm really terrible at this stuff. The giveaway.  Because I only mentioned it in, like, one vlog. I didn't put it on any of my social media pages. So we're going to switch it up. Because trial and error, mate. Trial and error. I'm going to put it on all my social media pages. We're going to wait until we hit 10,000 subscribers. Once we hit 10,000, I'll do a giveaway. And I'll probably do a cool little 10,000 subscriber video. Something fun. What would you guys like to see for a 10,000 subscriber video? You guys should comment that down below. What kind of video would you like to see? And I will do my best to make it. So that was Riedelfest. That was fun. Played Sunday League earlier as well. And I'll put all the highlights in this video. Let me know if you want me to put all the times I was involved. Or just the highlights. Because right now I put mostly just the highlights. Because I don't want to bore you with, like, every single time I was involved. But if you want me to put everything, let me know. Comment that down below. Otherwise, I'll stick to just the good stuff. Funny thing is, it was, like, two vlogs ago. I forgot what the video was called. I was making fun of people getting tickets for parking too close to the stop signs. And then my dad ended up getting a ticket. Which was even funnier. Because we were making fun of people and then we ended up getting a ticket. Or my dad did. And so I started making fun of my dad. Two days later, and I got a ticket as well. It was a speeding ticket. Not a parking ticket. But I got a ticket as well. And it was, like, three times as much as my dad's ticket. So I think the world is trying to get back at me for making fun of people. But anyway, I'm gonna put the highlights from Sunday League. And then we're gonna finish the vlog there, my friends. So until next time, I will see you guys later.


What is going on guys it's your boy DPG and before we get into the video I plan undoing a Q&A so if you guys have any questions for me no matter the subject leave a question down below in that comment section and I will do my best to answer in a future video but today's video I want to talk about Destiny no doubt people will state you still play this game this game's dead the revision is better blah blah blah blah but the truth is and the answer to the question of do I still play Destiny my answer at the moment is no I ain't played it in weeks and no it is not because I think the game is dead because I truly believe it isn't it's because for me at the moment it's just as dry as fuck but dead no way it for sure will pick its feet back up over the coming months with what bungee have planned in terms of events and DLC and until then I'm happy with the break I am taking the actual problem with Destiny and me is I'm a PvE player PvP don't really do much for me for damn sure I do really enjoy playing it for most of the time but find myself getting really bored pretty quick and because there's nothing for me to do in PvE at the moment I haven't been playing it to be honest I'm still only a max light score of 218 the problem for me is though I don't really want to grind the raids because I know for an absolute fact as soon as they drop and introduce that new higher light score you're gonna get one item that's gonna take you way over that 320 so there's no point in grinding the raids not in my opinion anyway now I know many people will be thinking and saying you should buy and play the division I actually brought the division I played it for an hour and haven't played it since although what I played was pretty good I don't feel it was amazing nor did I get in the slightest bit addicted to what I played and why they offered I also don't really feel it's a YouTube game more of a game for streamers now I ain't saying I'm gonna play a game I'm just saying there's no rush for me to play whatsoever I don't even know why people compared it to Destiny because in my eyes it's absolutely nothing like Destiny okay so we have blue purple and yellow armors and weapons that's about the only composing it has to destiny other than that there's not much of natural composing you can make not in my opinion anyway destiny for me is a way better game but that's just my opinion the game I am addicted to at the moment is arc I also know as well it ain't really as popular as it should be on YouTube but it is a great game one I am happy to play until destiny get some new content now I want to talk about my channel basically being a destiny only channel I do need more content to post so what do you guys think of me doing live PvP gameplay is is that something you guys would like to see I have done them in the past and you guys did seem to enjoy them but I haven't done them in a while so is it still something you'd like to see let me know I mean I do suck at PvP so do not get it twisted you want me seeing any triple-rate gameplays or miss five hours on what gameplays on my channel but what you could expect to see is plenty of raging and swearing for damn sure so let me know down below in that comment section if that's something you'd like to see I mean the truth is me and my channel I could easily keep on posting top fives although they are a pain in the ass to make I could continue posting them until content does appear with destiny but to be honest that is not what I want for my channel knows it what I want for you guys even though most of you guys love them and understand destiny don't really offer much at the moment for a player like me but I am willing to do other things so let me know what you guys want to see also guys let me know what destinies for you at the moment and also do not forget if you have a question you guys want to see me answer in a future video leave a comment down below in that comment section but guys hope you enjoyed the video do drop a like I do appreciate the support and the continued support and I'll catch you guys on the next one peace out until next time


For more videos on people's struggles, please subscribe to our YouTube channel. Thousands of people attended a rally in London on November 5th, which was organised to protest US attempts to extradite WikiLeaks founder Julian Assange. The Don't Extradite Assange rally was held outside the Home Office and was addressed by Assange's father John Shipton, who has been campaigning for his release in Australia and the UK. From Belmarsh this afternoon, Julian sends his greetings and appreciation for your strength and determination to free him from Belmarsh and allow him to return to the bosom of his family. Now all of his family gathered together here in London to carry the fight forward. We are faced here with a great task, all of us together, to ensure that Julian is free from the persecution that's gone on now for nine years. Not only can we win, but let me tell you, we are winning. Many of the protesters were wearing masks with Assange's face. The rally attracted widespread attention. After British rapper and musician Madhangi Arul Prakasam, popularly known as MIA, confirmed that she would be performing. MIA was joined by another rapper Kareem Dennis, known as Loki, who performed a piece in tribute to Assange. Fashion designer Vivian Westwood was also among the speakers demanding his release and donned an Assange mask as well. This is the home office of the British government. I am here to protest government corruption and the death of justice.  Julian Assange has been languishing in the high-security Belmarsh prison for several months after he was sentenced to 50 weeks in prison by a local British court for violating bail conditions. He has been put in solitary confinement by the prison authorities. According to reports, Assange's health has deteriorated rapidly in jail and he has lost nearly 15 kilos. The UN Special Rapporteur on Torture, Niels Melzer and former British diplomat Craig Murray have also suggested that Assange has consistently displayed signs of being tortured. Assange's deteriorating health was visible to all when he appeared at his extradition hearing on October 21st at the Westminster Magistrate Court. The whistleblower is currently facing an extradition request by US federal prosecutors who want him to stand trial on charges that could carry a total of 175 years of imprisonment. Several activists and celebrities have called for the immediate release of Assange over concerns for his health.


So, psychology and psychiatry has been held, infamously held by the neck because of pills. It's something that, you know, has been like a raising concern in everybody's mind because at least that stigma of going to counsellors have fortunately come down a little. But the fact that people go to psychiatrists and the fact that they are prescribed pills is somehow still there. You're telling me? I'm not… I'm not publishing the science. I said, if things are going wrong with your life, it's bad enough. If you get depressed, you're only multiplying the problem. For this, the activists have been… you also? You also? Okay. Okay, I'll explain that. I very much understand. I'm closely associated with various people who are in the profession and there are many people because every day I'm meeting thousands of people, not everybody is perfectly sane, lot of them go off. They need doctors' help, everything. It's not we're discounting that.  Don't think everybody is pathologically ill. No. Those who are pathologically ill, without medication for periods of time, they may not be able to come out at all. Some of them will never come out, that is also there. That's a different matter. But we are talking about all the fringe kind of madness, which all of us have. Something goes wrong. I can also drive myself into depression. I can also drive myself into depression. Something that I want doesn't happen. Everybody can… capable of driving themselves into depression, isn't it so? Is it possible or not? So what you're saying is… It's not a choice. I mean, is that what you're saying? You think depression is a choice? Please understand, there are some who are pathologically ill. It gets them in spite of themselves. But many of them push themselves into it. Suppose you get very angry, what is the expression you use? I'm mad at you. So consciously, willingly you're getting mad because you get some results in the society. If you keep trying it, because the line between sanity and insanity is so thin, if you push, push, one day you will cross. There are many, many, many people in the world who need not be ill, both physically and mentally, not just mental illness I'm talking. Both physically and mentally, they need not be ill. See, right now, for last fifty years, some millions of cardiac surgeries have been done.  Is that against your cardiology? Why is psychology such an insecure profession? Absolutely not. There's a certain diagnostic criteria for… So, I might be sad, I might be extremely sad, but that does not mean that I am depressed. I am entitled to my sadness. See, please, who doesn't know this? So, I look so simplistic that I don't understand somebody is sad and somebody is depressed, but is it possible that many people push themselves into depressive states at certain times in their life, and the same people also came out in a determined way? Is it there, thousands of them? Is it there or no? Many of them. So, if I say it is open, everybody need not end up with chemicals. Maybe it's against a particular profession. But we're talking for humanity. Thank you, Sadhguru. Although I don't think Anjali is fully convinced on the answer's tangent, but the question is… How do you get fully convinced or not convinced on a fact? If it's your opinion, you can be convinced or not convinced.  Has it happened to you? And most of you have come out of it without anybody's help or maybe with a friend or somebody who mentored you a little bit, have you? These are facts, these are not opinions.


I'm going to start off with a tiny questionnaire. Please raise your hand if you agree with the following. I have a website. I get visitors on my website. I care about the climate. I like win-win scenarios. And I'm tired of raising my hand. In the next 40 minutes, I'm going to tell you how to optimize your website. We'll try to focus on changes that have a positive climate impact, which are also benefiting your business and your visitors. It's pretty close to the concept of the triple bottom line for people, planet, and profit. Most of the presentation will skirt alongside of those concepts, and I'll try to touch on them when they become apparent. To me, that sounds like a win-win scenario to me.  The guy on the left is me, myself. The woman on my side is Lisanne. She's been my girlfriend for over 10 years now. We both love train travel, so we visited awesome places like Lapland, Switzerland, Italy last year. I myself like to play a lot of chess. I'm not that good at it, but I'm still learning. I also run a company. It's also called Teo van der Zee. It's on the bottom left. And I help clients, such as the one shown on the logos, to optimize their websites, either for sustainability, conversion, or both. An overview of this presentation, first a little bit of an introduction, then a bit of technical stuff, user-experience-related stuff, a summary, and some questions. We're going to start off with the introduction. Jo's did a bit of this. I'm going to double over some of the elements just to give an extra angle to how I view things that he told. It's perfectly along the same lines. Basically, what's the problem? The world is facing severe climate change issues. Global temperatures are rising. Most of this we know. Global temperatures are rising faster than ever. A lot of forest fires last year. A lot of the heat records being broken. And the digital industry has a major impact on this. Again, perfectly in line with what Jo's just told, he basically covered the part until visitors get on your website or bots. And I'm covering the part that deals with the part after that. So they're on your website now. How can we make the impact of that as little as possible? The emissions that the global digital industry has at this point are very similar to what the global airline industry is doing. So one of the major villains in, well, carbon land basically is flying. Everyone's being, well, angry at the airline industry for causing so much carbon emissions. And basically, the digital industry has a very similar carbon footprint. It's being estimated by people way smarter than me at about 3% of the global carbon emission output is being caused by both the airline industry and the digital industry. So it's on par at the same level. Websites play a significant role in that. You might be wondering why that's the case. Not entirely because Joost just told you, but I'm going to tell it again. All those servers and devices need to be made. So while Joost told a lot about bots and people coming to websites and crawling them, whatever you're having in your pocket right now in terms of phones, they were created by using valuable metals, by using plastic that had to be created. All those processes need energy in order to make them happen. Then, of course, they need to be shipped because they're not made in your backyard. So after they were created, they also need to be transported towards you. And of course, all these devices need energy. So those two people on the front are using their telephone. This is using energy. They will need to charge them later in the evening or later in the day. This energy needs to come from somewhere. Unfortunately, this often still comes from coal. While there's a lot of green energy movements going on these days, the majority of energy that we're using worldwide is still mostly fossil fuels. This really differs per country in that sense. So it's not that every country uses so many percentages of fuel from coal or from oil. But in general, worldwide, we're still more coal and oil than green fossil fuels. This is a chart published on nature.com. And it's projecting how much energy we will be using in about eight to 10 years. As you can see, the charts are going off the chart. There's still a predicted enormous rise in energy needed in order to keep all our interactive devices connected. Also an important element is these massive server parks need a lot of cooling. So all this cooling also needs to happen. And this creates heat because it takes away the heat from the energy center and it needs to cool. So what can digital specialists do to lower their impact? I tried to look for a plug-in. Didn't work. As you can see, the most popular plug-in has exactly 50 installs. And it doesn't even do what I'm trying to do based on this presentation. So installing a plug-in won't fix it. At least not the bit that we're talking about. Of course, Jo's talked about the bit before and there might be solutions in terms of plugins. But you can't fix this one with a plug-in at least not straight away. So we're gonna be looking at the technical bit of how to improve websites for sustainability. Hence the title of the presentation. Why? This is where the triple P comes in. It's really difficult to sell companies purely on sustainability. Cause if you tell them, we'll be making your website more sustainable, they'll ask, what's in it for me? This will cost me money. This will cost my employees time. How can we make sure this benefits everyone? Well, for starters, faster loading pages have an increased conversion rate. It's been proven across Walmart, Amazon, Google, Yahoo, Bing, they all have major case studies with millions of people in them showing that websites sometimes even 0.1 seconds faster have significant increases in conversion rate. So in terms of the triple P's, this one is for profit, it actually generates more money to be more sustainable in this context. Also, loading speed is considered a Google ranking factor, not one of the most major ones at the moment according to, once again, people who know more about this than I. But it's being considered as a factor and I'm predicting it will be a stronger factor in the future to come, exactly based on stuff that Joost was already mentioning. It's also costing the engines time and money to crawl slow websites. As you probably can hear in the speed of my talking, we'll be going through this at a pretty high tempo. I can slow down a bit if it goes too fast, but I'm just trying to give you as much information as possible and the slides will be available after the conference anyway. So if you want to go through something in more detail, just look up the slide and try to find on the internet additional information or contact me or someone else dealing with sustainability to find out more information even than what I'm trying to convey in this 40-minute talk. So you can study them calmly at the office or the home office, which is also really popular these days. It's really important to try to identify issues that are easy for you to fix for your website. What's easy to fix on one website might be super complicated to fix on another.  There's almost always fixes on your own website or your own company that you can do to make it more sustainable, to make it more profitable, et cetera. That's why I put up the 80-20 sign symbol for the Pareto law. Usually 80% of the fixes... That got complicated in my head. Usually it's 20% of the changes that cause 80% of the results. So there's only usually a small amount of fixes that you can do to get the most impact out of it. And the other 80% is usually a lot of work and way more difficult. So start with the easy stuff instead of try to do it all or start on the wrong end. We're going through five different areas. There is hosting, caching, code, video, and pictures. Each one of these elements have an impact on how your website creates carbon output in a different way. We're going to start off with hosting because, well, obviously every website needs hosting in some way. Many hosting companies still run on fossil fuels. So whatever you do with your website, it's run on hosting that's powered by fossil fuels. Therefore, your website creates fossil fuel output, therefore, carbon emissions if you run it on a fossil fuel hosting. There are companies that are switching to green. They're going fast, especially in the Netherlands. A lot of companies are switching to green, the hosting companies, but many still compensate their admissions. So they're not using green energy to power, but they're still compensating. And a lot of companies are mixing some of these solutions. You might be wondering, how am I doing? The bottom right shows the URL that you can go to. You can literally go to this URL. It's a Dutch foundation. I found out typing your URL in the window and then you either see a happy smiley or a sad smiley based on whether your website is hosted green or not. As you can see, mine is hosted green and that's primarily because it's hosted on Cloudflare. What Cloudflare is adding as well is that it's adding a so-called CDN, especially for websites that are serving a more distributed audience, so not necessarily websites that are only targeted at Dutch visitors. It can also help to decrease the distance that the data needs to travel from the hosting company to the customer. This distance also has an impact on the carbon emissions that a website has. So if you use a CDN, such as Cloudflare, no affiliation, you can decrease that distance and once again, triple P, you can increase your profit as well because your website will load faster. So as you can see, it's in a lot of these factors that once you approach the sustainability from the right angle, you can also benefit some of the other piece, such as profit and people. It's not an or-or in many cases. Most of the sustainability fixes that you can do will also have a benefit for yourself or the people that you're working with or for. Cloudflare is even going a step further. Instead of just going renewable, they're back-dating all the carbon emissions that they did from the start of the company and they're compensating for those as well. So I think this is a really good initiative from a digital company showing that digital does not have to be a negative force for the environment. Joost also mentioned it. Switching to HTTP2 or even 3 at this point is one of the options to also go more green. This one is really technical, so technical that I would even recommend just taking this to the IT people if that's not yourself. It really depends. It usually is a positive output to switch to HTTP2 but not always. So keep in mind when you're planning this change. Second off, caching. Caching is basically a way of saving the resources or even full pages in a way that does not involve doing everything it needs to in order to get your website on the screen.  You do not need to fetch all your CSS files again. You do not need to resize all your images on the fly. Basically, it creates a pre-package package that will allow the visitors to just get the package that is done already and save a whole lot of loading speed and carbon output in the process. It allows you to prevent these from loading multiple times as I just mentioned with several solutions being able to do so. In particular for WordPress, as opposed to the sustainability results that I just shown you earlier, caching is one that's really advanced in WordPress land. There's a lot of solutions, usually with millions plus users. I won't pretend to know which one of these is best, in particular for your use case, but if you plan on improving your website in terms of either sustainability, profit or loading speed, preferably all of them, there's many of these solutions out there that will probably cover your use cases, such as the one as these, which is not only doing specifically the caching that I refer to, but it's also doing stuff like the responsive image placeholders, combining files, even HTTP2 precursory steps to make sure that it becomes easier. Once again, it's up to your specific use case to decide which one is best for you, but there's a lot of options out there to improve the caching of your pages. Also, a tool that you can use to check out how well caching is handled on your own website. I'm not sure, by race of hands, who is familiar with Google Lighthouse. I would say about half to two thirds. This is a tool in Google Chrome. If you open Google Chrome and you open the developer console, there is a button called a lighthouse, which you can use as like an interactive, specifically looking at this website on the side, which can of course be any website, and you can look at a lot of performance metrics, even some SEO metrics, accessibility metrics, to see how well you're performing on those. So I did this for my own website, and as you can see, for me, there's also room for improvement in terms of caching. I don't fully agree with recommendations in this sense, but that's way off-scope for this presentation. There's a lot of tips being handed in these lighthouse reports that you can immediately use and use for free to improve your own website for sustainability and performance. Next up is code. Basically, what Yoast talked about was crawlers fetching something. So they either fetch RSS feeds, or they fetched API rest links, or they fetched pages, but there's also a lot of files that normal visitors would fetch when they visit your website. Usually, a crawler, I think at least, will crawl mostly HTML and files that it can find. But visitors will basically fetch anything in a browser because it needs to render the full page. So there's images, JavaScript, CSS, HTML, and fonts. As you can see on the top, we're getting a bit bloated. Compared to 2012 we're loading, I would say at least three to four times as much files and data just to render the website. So the visitor experience is not necessarily better. It's just bigger. If you look at the same data for mobile, we're about five to six times as much data that we're fetching just to get the website on the page. Another same data in a different way visualized. We basically increased it by multiples compared to 2012. One of the culprits, just naming one, there's a lot of them jQuery. With modern JavaScript, jQuery is probably useless for, I would say 90% of the websites, as long as you know how to make sure that it doesn't get specifically used on yours. jQuery is loaded on a ridiculous amount of percentage of pages still, just because everyone was using it in the past and isn't willing to change up their ways to not rely on them anymore. One of the more popular modern ones, React frameworks, similar story, a lot of KB and JavaScript loaded, many if not most normal websites, so not applications, but normal websites, they do not need a framework like React to do the stuff that they're doing. So once again, you can ask yourself, is this the way that I need to load my files? Do I need a framework like React to build my page? Or is it just super handy to do this one tiny thing? And then I have to load the framework on each and every page. An overview of what JS frameworks are being loaded. As you can see, it's a wide range of frameworks that's being loaded. I don't think most of them have particular purposes, but for instance, moment.js is used mostly to convert dates. So a date that you see in American format, you can format to Dutch format. And that's, I think 70K of JavaScript is being loaded just to do that one tiny, tiny thing that with modern JavaScript can also be handled with one or two lines of JavaScript. Yay, I never use animations in my presentation, but I think this was the one exception where I should. Animations are useless in almost any cases and particularly in this presentation. They cost a lot of processing power because stuff has to move on the screen and either the video card or the processor itself has to handle those movements on the screen. If you scroll down and stuff moves on the screen, this costs a lot more energy to process than if the stuff weren't moving. Once again, multiple profits win-win. Many visitors also hate it when stuff moves on the screen. I usually use an example of a prehistoric tiger which matches up really well with the zoo. So I think I'm gonna slide that in the presentation. In the past, when stuff was moving, it was critical. If you were on the Savannah and you saw something moving in the distance, that might have been a tiger. So we're really primed to look for moving stuff and move that on top of our priority list when stuff is happening. If you look at a website and this amazing image slider is going left to right at speeds that you can't imagine, it will immediately draw our attention to that tiger on top of the page time and time again. Just try reading casually a text that's below a sliding visual slider. It's almost impossible because we're so hardwired to look for that movement. Again, one of the win-win situations, many of these social media platforms have tracking scripts on your website such as Facebook, Google, Twitter also has an interactive one. Basically, they just load up files to make sure that they can track whatever's happening on your website. That's not really privacy-friendly and it's also not good for your loading time. So I don't think privacy is one we covered already but it's also a win-win in this scenario to make sure that both the website loads faster and you serve your visitors better in a way that's more privacy-friendly. Next up, video. One of the questions in Yoast's presentation was related to streaming video, I think. It's really difficult to quantify the impact of this. I tried to look once again for people who are more advanced in this than I was specifically related to video. In my personal opinion, I figured video must be like the worst in terms of carbon emissions because it's such big files compared to what, for instance, HML or CSS is doing. Apparently, there are servers out there that are so specifically set up for video that video is getting less bad compared to what it was in the past but of course, video is still really large and it moves the screen a lot so computers have a difficult time with this. One of the major parts why it's so difficult to quantify video is because of where they are hosted. Usually, they're hosted at either Vimeo or YouTube or Vistia, which are video hosting platforms that are set up by this. If you decide to self-host, the problem explodes in terms of impact because your server is not set up in a way to stream videos at least not to large number of audiences. Therefore, self-hosting videos probably isn't wise. Unless you have a specific reason not to, host your videos on YouTube for now. I'm sure there'll be platforms in the future that are super environmentally friendly and offer you benefits that YouTube does but for now, it's probably the wisest choice unless you have a reason not to do that. Also, unless you have a specific reason to, turn off autoplay myself and I can imagine a large percentage of the room will be irritated by videos that autoplay and the autoplay causes the carbon emissions to already start flowing for visitors that probably don't want to see the video play anyway. So once again, win-win. If possible, try applying lazy loading to the video so that if you have a video that isn't visible on the screen without visitors scrolling down, why load the video in the first place if visitors can't see anyway what the content is. It's the same concept of images. They also have lazy loading which is getting much more popular but videos can have a similar concept applied to them. Then there's background videos. It used to be a thing, like all of a sudden everyone was using background videos and never got the vibe because once again, there's the tiger movement distraction. I had to look for a particularly bad example and it actually took me quite a while to find one that was as terrible as this one. They sell huge yachts and there's like a video of people like running the jet skis along the yachts. I don't think environment is their main concern for this company. They loaded a whopping 27 MB of background video. So this video was not adding anything. It was just showing the people like going around on their jet skis. So I don't think background video in this context is necessarily the way to go, especially with file sizes as the ones they are offering to the visitors. Last up, at least for this part, images. This is the same chart, but now focusing on images. We were there in the past and I think we doubled it in about 10 years. Mobile, four to five times, I would guess based on the charts. So triple and five times. Those images didn't necessarily get better in terms of what's on them. I mean, if I show you an image that's made on my K7500i Nokia, you would probably recognize what was on it, though the file was probably like 100KB. If I shoot an image with my current iPhone, it will probably be somewhere between five and seven megabytes. Yes, I can put it on a billboard. Super cool. But I'm not planning to do that anyway. So one can imagine if these images really need to be as large when they're put on websites. Therefore, small checklist.  Can you remove the image? Would it seriously decrease the value of what your website is showing? If it has to stay on, can you resize it? There's great tools about it available for this, such as Tiny PNG, Kraken or Image Optim. If you're using Mac, they can seriously decrease image size, sometimes up to like 10% of what you're seeing in file size. And I cannot see the visual difference even when I'm looking for it. Can you compress it even more? Oh, wait. The resizing one was in actual width and height, and the compression one is the same width and height, but then compressed in terms of quality. Are you using the optimal file size? The file type, sorry. I just heard Joost mention something about WebP. I was gonna say WebP is probably the best way to go, but apparently in WordPress, there is someone who considers this not the best way to go at least for now. So you have to consider different file types. Usually there are better file types than the ones you're serving with. PNG is a common one to serve everything in, but for instance for images, usually JPEG can be a better one until WebP is available, because that's like a smart one that basically picks the best one from the list based on the technology that you have on your device. I'll let you try to answer this one. We have a winner in the room. I could do a whole presentation about carousels, but it can be summarized in one word, no. Can you apply lazy loading to the image? I tried to lazily use the same cat to apply the same format to the presentation as well. If possible, don't load an image that won't be visible for a user. It's useless in so many contexts, including sustainability. Try to lazy load it only when a visitor needs to see it. Once again, Lighthouse. Lighthouse is able to show images and provide more data on how they're being loaded, why they're being loaded, and if they're being loaded. For instance, this image apparently does not have an explicit height and width, and that causes the browser to have difficulties with finding the correct image size and showing it. So therefore it's probably loading one or two formats and it's costing unnecessarily loading time. As you can see, it's a small issue on this website, but there's websites that are literally loading billboard sized straight from the phone images on the top of the header in a format that's like this large. So that's absolutely useless waste of both loading time and sustainability effects. This was the technical part. You guys got through. What I want to add is a bit about the user experience. This actually is closer to what I usually do on a daily basis, and what I will try to show you is that sustainability and conversion is not only in optimizing for technical stuff. Yes, it's important to optimize the technical stuff. That's why it is in the presentation first. So if you optimize it for technical stuff, then you won't have to load all that stuff that you fixed in every page view there's a visitor does, but there's more out there. Once again, win-win scenarios. I really like to put the focus on the win-win because it's so much easier to tell people to do stuff when you don't have to sell them a negative. If you're telling people to donate money, they will probably figure out that their wallet will be less heavy. So it's yes, it's a plus. They give money to a good purpose, but they will have less money. If you can tell someone that they can donate money and that scientific research shows that their happiness will increase as a result of spending that money, their own personal happiness, you converted that win-loss into a win-win. And so it's easier to have people to persuade people to do stuff when you can convert it to a win-win instead of it being a win-loss or even a win-loss loss. One of the examples on using the user experience to have a positive impact on sustainability is to lower the number of page views that visitors need. So if you have a page, and for instance, it shows three images, three CSS files and three JS files, and a visitor clicks on to the next page, they will probably need to load a similar amount of images again because they went to a different page. Of course, there's caching. Like that's the big one in the room. If you can apply caching to it, less images will need to be loaded or they will be loaded in a more efficient way. That's why you covered caching in the previous part of the presentation. But if you can make sure that visitors will go to the page that they need to go faster or more efficiently, it will help carbon emissions from being emitted into the environment because there were less pages that need to be visited. Win-win, visitors will get to the place they wanted to go faster and therefore they will be more happy with your company or purchase your products or services more. One of the great examples is the local municipality website of the place where I live in Bilthoven. They have a super smart, it's called TopTaken in Dutch and it doesn't really translate well to English, so we have it in Dutch. I think it's TopTasks, but it's not exactly the same concept. Like the motions? Basically most used options, yeah. I would say that 90% of the visitors that come to this website want one of these six buttons or that one. So if you come to the homepage, there's no need to scroll to an endless archive of options or click through some category levels that will get you to either one of these. They probably did user testing and figured out that everyone wants to go here anyway, so now why not add them as huge buttons to the homepage? For one of my previous clients, I did the same concept, basically in a commercial concept, this is what people want to do and they usually want to do it through that button. Win-win, company is happy when they click there. So if you can make sure that, for instance, on the homepage or on a different page that a lot of people land on, you can already pre-decide for your visitors where they probably will want to go anyway, consider putting big buttons up that will take them there. Also, in a more fashion context, I'm working with and own a lot of fashion websites because they have quite large environmental impact due to the product that they're developing. If you can create a product page, sorry, a category page that will allow visitors to see so much data from the category page itself that they don't need to yo-yo back from the category to the product page or middle mouse open the entire row of images just by showing the specific dresses that are available in different colors, the price that it has, the discount, discount mentioned in percentages, it will save so many clicks from visitors that will need this data anyway, but if there's no way to get the data to them instead of, wow, I will redo that whole sentence. Visitors will need this data. They will get this data. Usually they'll middle mouse open the entire row of images to get it and load all this unnecessary data if that's not one of the pieces of clothing that they're considering to buy. If you can find ways to present as much data in an appealing format to get it to them, it will save a lot of clicks and therefore page views and therefore emissions and therefore unhappy visitors. Another way of really dealing with this are filters. I wrote a really long blog post about filters because there's so much room for improvement just to help people get the right piece of clothing. They probably know what they want. They know what type of figure they have. They know what colors they're looking for. Give them filters. Make it easy for them to find it. Less clicks, more happiness in terms of visitors, probably more profit for the company. So it's a huge win-win just to have these pages improved in a way that basically give the people what they want. Another example for this was this one, what did they have? They had the additional star ratings and additional labels and a way to favor the item from the category page. So this is not a free pass to change your category pages up with all the bells and whistles that you can find just to make sure that people will not have to click through. That's not how it works, but if you can use something like user research or user testing to find out what options people would like to have on the category page, try to figure out ways to get it to them. A really nice way to save page views as well, especially on mobile, is to allow for multi-select and save. I think in my research, only 4% of all the fashion websites that I could find in Holland use this type of save. All the other pages are like click, reload, click, reload. So for every filter, you're reloading the entire page. This one, oh, this one had the labels. Usually there's comments on the screen, but the comments are not there. So I have to guess what comments I typed under there. And that's pretty difficult, I can imagine. This one had the labels to show which ones were vegan, which ones were sustainably produced, et cetera. Another way of making your website more sustainable in terms of user experience is to guide people to more sustainable choices. I just saw the five-minute sign, so I have no time to do the detail I would have loved to do about this. Please talk to me after the presentation to get more details about this. Super long story short. People have an intention to do stuff, such as lose weight, stop smoking, eat more healthy, move more, and then there's the actual behavior. There's a huge gap in between what people want to do and what they're actually doing. There's been quite a lot of research done, how this applies to sustainable behavior, and so also to how to apply this to website sustainable behavior. I will just mention the ways that are identified as having an impact on this, and then you can look further into this if you want to. Use social influence to promote sustainable actions, breaking bad habits and encouraging good ones, leveraging the domino effect of positive spillover, the site where to talk to the heart or the brain, and this is basically an example showing how to do this heart and brain. This is specifically a brain one. It's actually showing what materials were used to create this specific clothing. A lot of companies are talking about this, but G-Star just put on a big chart on every piece of clothing that they had. This one is sustainable, this one is not. If you like that one, sure buy it, but we also have a sustainable other option and it's created of this and that material. Then there's basically the other way, talking to the heart, our water is being polluted, our animals are suffering, human rights are being abused, et cetera. So if you imagine how to talk to the heart or the brain, there are different ways of reaching the people that you want. Last one of the five, favor promoting experience over ownership. Basically Uber is a good example of this. Why would you want the car if you can Uber somewhere? I know there's like all sorts of buts and ifs, but an example of not buying what you need, but basically renting it. Last one of the user experience ones, reducing the percentage of returns. Returns are specifically win-win case because no one wants to return their stuff. They want the right stuff in the first place and websites need to make it easier for us to get it. So websites, please provide good reviews, make the reviews filterable, make them smart, make them clickable, provide images, provide ratings, provide usefulness. Again, super long blog post that I wrote about this, detailing how to make your websites more return less. Basically fashion is like, well the worst in terms of returns because almost 50, 50% of every fashion item that is bought is being returned. Percentage is ridiculous if you imagine it and it's basically costing everyone. The webshop is paying, the visitor is sad because they have to go to the post office to return and it's costing almost 15 euros for each return.  Then there's images, please provide good ones. It's so difficult to see how a piece of clothing looks if you can't hold it in your hands. Make sure the sizing is correct. Another long blog post on how to fix this. There's so many ways of getting this right and so many webshops are doing it wrong. Provide info on the material. I just gave the example of GSTARRA. Here's them again. They provide a lot of information about the materials of the items that they're using. Consider video. Yes, it's also not always a great way to use video, but this is one of the more nuanced examples. If you can use videos in a way that creates less returns, then yes, it has a negative impact due to the carbon emissions of the video itself. But if you can limit those by technological solutions, then perhaps it will reduce the number of returns. So this is one of the ones that you might consider using a testing on, for instance, user testing, A-B testing to see whether the items are being returned more or less using the video. Where it's a summary. Basically, get your hosting in order. Consider using green. Consider using solutions like CDNs to improve the amount of fossil fuels that your website needs based on purely hosting. Fix your caching. For WordPress specifically, there's good plugins out there. There's free plugins out there that will handle your caching in ways that not your entire page needs to reload. Get your code in order. If you're using videos, host them properly and make sure they're only showing for visitors that actually need them. And if you're using images, consider removing, resizing, reducing or compressing. That fourth one that I just mentioned on the slides that you can look back as I mentioned before, to reduce the amount of, well, carbon impact and basically loading speed, which will impact your profit and your people. I think right on time, based on the images.