 It's been an amazing year for WordPress and the web in general We've seen some massive updates to aging technologies We've seen some reinvigorated protocols and we've seen some like truly disruptive ideas that have really disrupted this disruptive industry It's been so that we're not a tech crunch disrupt. Okay. Sorry. Sorry about that I got changed my language here basically what I'm saying is we've seen some pretty cool stuff come about this year Today we're gonna be talking about some of these Awesome new technologies and improvements in technologies and how they relate to WordPress a real unifying theme of what we're going to be talking about is How these different technologies have worked together to really speed up the web? And there's really no better place for us to start than one of the most important technologies for WordPress PHP itself so PHP 7 was released yesterday. I Yeah, that is worth clapping I Had to write like different versions of this part of the talk because I wasn't sure if it was actually gonna happen or not as you May be aware. There were some false starts with PHP 7. It was supposed to be released last month But we finally got it. It's here so I can talk about this in the current tense I don't have to talk about it in the future tense So PHP 7 had a long journey to get here PHP 5 was released in 2004. That's the predecessor to PHP 7 PHP 6 started in 2005 it went on for about five years and then in 2010 it was completely abandoned There's was a lack of developer interest. There's a lot of problems with the internals that couldn't be resolved So eventually was abandoned. There were some things that were brought over from PHP 6 ported back to PHP 5 things like namespaces and traits But PHP 6 never saw the light of day Facebook Facebook then kind of picked up the charge with their Second version of their hip-hop virtual machine or HHVM that started around 2010 where they really got going with that and they made great Promises they said it would be significantly faster than PHP 5 it would be It would be completely compatible with the PHP 5 for spec And it would also be able to Run this new language hack that was a better version of PHP they made good on their promises and If the PHP internal developers didn't take this as sort of a motivation to get their stuff together with PHP We would take this part of the talk and talk more about HHVM But fortunately PHP internals developers really got their stuff together. They got PHP 7 released yesterday And now my wonderful bowtie adorn colleague will tell you all about PHP 7 PHP 7 overhauls the internals of PHP Essentially the code that runs behind your code is faster Much much faster. In fact, it's two to three times faster in real-world situations And one of the most interesting parts about PHP 7 is the fact that upgrading your code is relatively easy Jack when you upgraded to WordPress 4.3. Did you notice a deprecated constructor notice? Why yes, I did PHP 7 deprecates the old PHP 4 style constructors Essentially, you no longer can use the name of a function and the class as the same class of the function for the constructor WordPress decided to get ahead of the game and WordPress 4.3. We deprecated the 4.4 constructors, so if you are extending WP widget in the no longer supported way You now get a notice so that you can update your code so that your code is ready for PHP 7 The next big change in PHP 7 is called uniform variable syntax But we can really think of it as the variable way that variable variables are processed Now regardless of how an expression is written or what it contains it'll always be processed left to right So let's take this example dollar sign dollar sign a Array B array C So in PHP 5 and below it's processed so that it looks for the B element of the a array and or the C element of the B array of the a Variable and that then is the variable that's called now the double dollar signs will be processed first So dollar sign dollar sign a will be processed first Then it will look for the B property of that outcome and then to the C event Another change is to the list function the list function no longer assigns variables in reverse order So again, it's going left to right It also no longer accepts empty variables. So take a look at your list functions when you're upgrading your code As my bow tie adorn colleague mentioned PHP 7 was officially released yesterday. You can install it on servers today We're pressed 4.4, which is scheduled to come out next week runs great on PHP 7 And you know what else word press runs great on? HTTP 2 So HTTP 2 is the first major upgrade to HTTP since 1999 when HTTP 1.1 was released Now this is a really important thing because HTTP in my opinion is one of the most important pieces of technology For all of us in the room If HTTP didn't exist the web as we know it would not exist Wordpress would not exist this conference would not exist and probably most importantly memes wouldn't exist So the initial version of HTTP was designed for a very different web than what we're used to today This was a web that didn't have JavaScript. It didn't have CSS It was only about exchanging single documents that were ASCII text only based documents Things have changed a lot since that time, right? We're now used to these very complex rich web applications that are these complex webs of Multiple documents coming together to give you this kind of rich experience in the browser and Optimizing a protocol for a single document versus this rich web of documents is a very different challenge So HTTP 2 was able to understand the current web as we know it today and Optimize for that experience rather than for this old version of the web Now HTTP 2 its main Kind of promise to us is that it's going to make the web faster And it's going to do it in such a way that you don't have to make any changes to your application level code You just install a HTTP cap capable server connect to it with an HTTP 2 capable browser And you have HTTP 2 connections that should speed up your application. It's completely backwards compatible with HTTP 1.1 And it does this by trying to manage latency So latency is the time it takes to send a packet from one place to another as web developers We're concerned with how long it takes to send an HTTP request from a client or a browser to a server and How long it takes for that server to respond with an HTTP response from that server to the client and HTTP 2 is optimized to make this process much faster to reduce as much latency in our connections as possible And the main thing that it does is it handles this through multiplexing multiplexing is the process of opening up a single TCP connection between a browser and a server and Then using that single connection for bi-directional HTTP requests and responses so we can be processing a lot of these documents a lot of these individual assets at once Rather than HTTP 1.1's model where you can only work on a single HTTP Request or response at a time per TCP connection So you have to open up all these TCP connections in HTTP 1.1 world Where's HP 2 you just open up one connection and all of your HTTP communications happen over that single connection Zach I know you love talking about HTTP 2 But what does this have to do with WordPress? Well, everyone WordPress loves HTTP 2 As a matter of fact all the way back in the early 2000s when mr Matt Mullenweg decided to fork B2 and start WordPress. It became HTTP 2 compatible At that very time because any application that worked with HP 1.1 is automatically HTTP 2 Compatible so WordPress sometimes gets a lot of flak for kind of having older technology and everything We were 12 years ahead of the curve on this sucker. So like good job WordPress, right? This is great So WordPress does work over HTTP 2. You don't really need to worry about changing anything However, there's ways you can optimize your application to take advantage of HTTP 2 There's currently a working group That's looking at ways to make this easier at the core level Expose some APIs that make it easier for plugin and theme developers to take advantage of HTTP 2 if you're interested in this It's kind of in the early days of these discussions If you hop on the WordPress slack channel, there is a group core HTTP That's discussing these things if you want to get involved So what we want to turn to talking about next is something that is related to HTTP 2 That's your CSS and my colleague here will talk about the latest in the world of CSS CSS for doesn't actually exist But as someone who likes version numbers, it's a convenient thing to say The CSS working group at the W3C has been compiling a number of different specs that together Encompass the future of CSS and I'm going to talk about a couple of them The first is the CSS selectors Specification level for this is how you have selectors in CSS in the current versions of Chrome Safari and opera There's now a mutability Pseudo class to target all the fields that are user editable Including content those that have content editable So now we can use the Pseudo class read write to target those fields And we can target the fields that are not editable with read only Another selector that we can use is the nth match and nth last match selectors These work similar to the nth child selectors, but allow us to select from a much wider range So we're no longer contained to just selecting the child of a single parent. We now can select from a larger range Unfortunately, none of the browsers support this selector just yet, but they should soon Two more in progress CSS Features will allow WordPress core to no longer rely on sass for admin color schemes The first is the color function This allows you to adjust the properties of a color on the fly Things like the lightness the brightness the saturation the blackness the whiteness of a color can be adjusted This makes designing inside the browser much much easier No longer will we have to have a pre-compile step in order to have color adjustments We now can actually do those natively and the performance of us as developers and designers will improve Unfortunately, we're still waiting for the first browser to support this and none of the browsers have given indications of when they will be adding support for this But a feature that browsers are starting to pick up is called custom properties for cascading Variables, this is really just CSS variables So now we can natively set a variable and have it processed in our code So for example, if you are updating the branding of your site, you don't have to search and replace You can update it in just one place This is one of the great features that preprocessors have had for a long time and one of the reasons that preprocessors have become so popular So we could have D5 for e2 1 which is the wordpress orange to find in our style sheet And then we just have to update it in one place if we're pressed ever decides to go with a different color orange If you want to take advantage of these features you can do it today Though we don't actually have to wait for the browsers. We can use a Program called post CSS and many of its assorted plugins to modify our style sheets as a kind of post processor So we're writing CSS for tomorrow and using it today But in order to forget our styles to our the clients securely. We're going to need to talk about HTTPS Over the last few years Over the last few years HTTPS There's been a large movement towards getting HTTPS everywhere Yes, yes, that is something also worth cheering for HTTPS gives you guarantees about data Authenticity integrity and encryption it is a very useful mechanism to Preventing man in the middle attacks and pervasive monitoring the IETF or the Internet Engineering Task Force has come out and publicly stated that they consider pervasive monitoring and attack against Internet privacy for users and organizations They have even said that if you want to propose a protocol for us to standardize You need to consider pervasive monitoring as a certain type of attack that your protocols need to protect against Browser vendors have jumped on this bandwagon as well as an example Chrome They have certain APIs that only work for sites that are HTTPS only APIs like USB Bluetooth web crypto service workers. These are all HTTPS only if you have an HTTPS site You have no access to those APIs Firefox has even come out and more aggressively kind of proclaimed that they're only going to develop new APIs in their browser For sites that are HTTPS only and they will take that one step further and in the future They'll start deprecating APIs that work with the HTTPS to only work over HTTPS So the writing is kind of on the wall here, right? We're moving to an HTTPS Everywhere type of web. So how does WordPress work with HTTPS? It works perfectly. Guess what? Oh, sorry. I forgot that slide. WordPress loves HTTPS. Yes, right. It's good like people can deploy HTTPS sites on WordPress. It's not a problem over the last couple years. It's got even better There's been a lot of work kind of starting in I think 4.0 where WordPress has fixed some major bugs that were kind of blockers and made Things a little bit difficult for people to work around with HTTPS sites It's gotten better over time I think the most difficult thing at this point with WordPress and HTTPS is migrating an HTTP site to an HTTPS site because you have a lot of mixed content issues However, I think WordPress is positioned perfectly to handle this We have a certain data model where you pull data out of a database and then almost any data You get from a database goes through a set of filters We can do this programmatically moving you from HTTPS to HTTPS We just need to work out a lot of the details So I would expect to see more changes to core more plugins that help with this transition But WordPress is really in a great place to help with this Another great thing that happened just yesterday Was the announcement of let's encrypt their public beta opened. This means this is a new certificate authority That offers free certificates for everyone Okay, okay, we got the point we got the point so it's basically the Oprah certificate authority And all of you today can go get free certificates You have enough time to do that while I'm sitting here talking about the free certificates that they give out So they give out free certificates and it's kind of a big deal. It's it's really important one of the barriers to people moving to HTTPS unfortunately was the cost and Sometimes certificates can be sold for a very high premium. Sometimes they're not so expensive This makes it easier freeze a pretty easy choice for people to make now one thing that let's encrypt has done that That doesn't really make all of the headlines because the free part kind of seems to be the sexier thing in the headlines is They standardize a new protocol. They have this protocol called the automatic certificate management environment or the ACME protocol This went through the IETF. So it's a standard body group has worked on this. What ACME is is it is a restful HTTP interface for certificate management and issuance So if a CA if a certificate authority adopts ACME They are opting into a standard way for third-party clients to connect with their servers to issue certificates So the possibilities here are big you could do things like start writing scripts to be able to rotate your certificates every three days That's like changing your password Constantly right it's a good security of that you could do things like make your own bespoke little store to connect to multiple CAs to sell certificates through a much better experience than the current CA process Which sometimes can be really annoying you could have scripts that will allow you to deploy your website Configure all of your TLS and your certificates because you can automate it through this interface This is something that will have a lasting impact on the certificate authority Industry for years to come it's something that's really interesting interested in watching and With WordPress we run code That code can connect to API. So why couldn't we do something like this? Hook it up to WPC li and just type WP cert new and you've provisioned a cert for your site This is in the works right now and this will happen Hopefully in a few months So obviously whoops went too fast there HTTPS is really great with WordPress it works. It's part of what we consider the WordPress future stack So I want to turn to our next topic if you heard in the news recently WordPress actually switched over to being 100% JavaScript, so it's important that we talk about JavaScript and my colleague here will tell you about ES6 2015 ESPN is that it? What is this thing called? so ECMAScript 6 was recently released the language that we call JavaScript is standardized by a body called ECMA International and They've now released the six specific eight sixth version of the specification ECMAScript 5 was released six years ago yesterday Now compared to some of the other technologies we've talked about that's not a whole lot of time But in the browser world that's eons to give you an idea in the WordPress world six years ago Nathan didn't have commit to WordPress Matt didn't have gray hair. I'm not saying those two are related So ECMAScript 6 which is also known as ECMAScript 2015, which is also known as JavaScript 2015 is a new update that standardizes many things that the browser does It also is taking a change and going with a more modular approach and I'm going to highlight three of the modules I'm really excited about promises and we'll tell you all about those I'll talk to you about arrow functions Zack have you ever written a JavaScript function or the only thing inside the function is a return statement Where you modified the original parameter weren't we talking about promises? Well if you had You would have found arrow functions to be incredibly helpful Let's take this example right here where we want to take an array of Evens and we want to get the odds out of it So we can use the map function and then use our arrow function to just take our original number of which we are calling V and adding one and that right there is the entire function statement inside the parentheses one of the interesting parts of Arrow functions is that they share the same lexical this as the surrounding code This means we have yet another this to remember when we're writing JavaScript One of the hardest parts about switching between JavaScript and PHP has been that JavaScript doesn't have default parameters Well now not only do we get default parameters, but we also get a nice helper called the rest parameter To take advantage of the default parameters What we can do is use the same code that we would use in PHP Now the rest parameter what it allows us to do is it takes all of the parameters that are added after that So in this case if we call foo with five different parameters They will all end up in an array called a and to use the rest all we have to do is prefix our Parameter with a fake ellipsis or three dots So it's time for me to resolve that promise and talk to you about promises Good job. Good man. Good. Good. Good one. That was good. That's good Promises are a core part of the JavaScript 2015 standard and are something you may already be familiar with due to their inclusion inside jQuery Promises allow us to not end up in callback. Hell So they are a first-class representation of a value that will exist in the future promises live in three states pending fulfilled and resolved a Pending promise is one where the code is still executing. We're waiting on it a resolved one is one that has completed successfully Rejected well rejected is kind of like PHP 6. It's failed And then what we can do is we can add a then method onto our returned promise and That will be called whenever our code has finished executing in the future The exciting part about these JavaScript changes is that we actually don't have to wait We can use them today by using a project called Babel Babel is a JavaScript compiler that enables you to use tomorrow's JavaScript today You don't need to wait for browsers to catch up or for users to get off IE versions below 9 in order to use These great new features of JavaScript So as we wrap up here just want to emphasize that 2015 has been a really amazing year in terms of pushing web technology forward Jordan and I talk about these things a lot and we think it's really important that as web developers in this community You stay up-to-date on these latest Latest things we think it's really important that as soon as you possibly can start experimenting with them One of the best ways to experiment is to start talking to hosts today About these technologies and about why you want these technologies on your servers down the hall There are eight different web posts here today. We should go up to them and we should ask them How can I use PHP 7 on your surface? How can I use HTTP to on your surface? How can I use let's encrypt to get a free certificate on your service? We the developers that build with WordPress can drive adoption of these exciting new technologies But we must make sure that hosts know that we want them We invite you to follow the both of us on Twitter You can find me at Aaron Jordan and me at tolman Z and we also ask you to follow the WP Future stack hashtag that we probably still need to create But this weekend since there's a lot of buzz around these Pieces of technology Jordan and I will be tweeting about them some good resources when we hear good things and talks We'll tweet about it. We want to create a buzz This is something everybody in our community should be aware of and we want to try to start making you aware of that now So look at the WP future stack Hashtag and thanks everyone we do we do have a few moments for questions So if you have any questions, please approach the center mic So I just had a point of I just had a point of a clarification of something you said earlier about variable variables And that they're now being read left to right so that mean that in PHP 5 If I had variable a with array So basically it would read right to left So it would be the value of the value of the array that was the variable variable So in PHP 5 it's kind of inconsistent and it depends on how it's used so the double dollar sign a B that you saw there What it does is it processes the first variable a and then the B and then processes the the second Dollar sign at the end like the second dollar sign kind of gets processed last Rather than getting processed all left to right if you had included a like an Object with the arrow to a variable Before it would process that variable first and then it would process then it would do the result now It'll go left to right as well. So it's always left to right. It's no longer inconsistent. That's awesome Are there any drawbacks from using the free certificate authority versus some of the more privatized solutions that You know would normally incur a cost I Would say no Other people might argue otherwise, but it's a certificate. That's their their certificate has been cross-signed by other root certificates in In browsers that are going to be globally accepted. So you're going to be able to get the same authenticity integrity and Encryption promises that you would get from any other TLS connection from any other provider There's a little there's sort of arguments about What like saying extended validation certificate gets you there's more work done to Validate the the person on the the person or organization on the other side of the request for that Certificate some people will argue that that's Important that you really need to go through that process other people will say that doesn't actually give you a lot of extra Trust so there's there's there is debate about that So the one thing you can't get but let's encrypt right now is any organizationally validated Certificates or any extra validation. It's just domain validation. So all you need to be able to do to issue a certificate is Prove that you have ownership of that domain and then you can get that certificate So some people might make an argument there But that's more of a like a bigger argument about domain validation versus organizational validation or extra validation Overall, I I would not think that there's any difference between getting that free cert and one of the paid for ones Thank you Any other questions? All right, well, we'll be hanging around probably around here and just outside the doors if anybody has any questions They want to ask offline. So thank you everyone. Thank you