Obviously we're going to talk about why you should move to PHP 7 if you haven't already and how that process how we can help sort of automate that process to some extent. Yeah I've been introduced already so I don't have to say a whole lot anymore I guess. I'm from Belgium best known for Belgian beer and Belgian chocolate and other tasty yummy things and odd-looking buildings. This is an iron crystal magnified 65 billion times. I'm from a town very close to Antwerp where we have a beautiful abbey and castles and stuff like that. It's all very nice except when we have some snow that's what we get then. And smack in the middle of that I started a company about 17 years ago now called Cube Solutions. We do mostly PHP, we do a lot of training stuff, high scalability things and I've been doing open source for 21 years. I'm getting old. Okay and I've written a tool PHP compatibility which I'm going to talk about as well today. I used to write a tool called OpenX which is an advertising server and I've been doing talks like these for the last couple of years. So this this talk is in two parts. Part one is why should you upgrade so I'm going to talk about what's new in PHP 7.0 to 7.2 at this point. These are not good reasons to upgrade. It's cool to have the latest version. Yes it is cool but that's not a good reason to upgrade and especially not a good reason to upgrade is to annoy your sys admins but that kind of makes sense. Part two I'm going to talk about how to upgrade and how to automate some of that process. Don't expect me to provide some magical solution here. We can't solve everything but you'll notice that a lot of the stuff can be automated, a lot of the issues can be detected automatically. I'd like to start with a show of hands. I'd like to know who is running which version in production. Who is still running PHP 3 or PHP 4 anywhere in production? Yeah there is always at least one, there's two. Yes and it kind of makes sense because there's still code out there that was built by someone way back who is probably not working there anymore, who is maybe dead even. Yeah I mean I've seen it happen and yeah the code needs to be maintained but nobody dares to touch it really. Who's running 5.0 in production? Okay 5.1, 5.2, couple of hands, okay 5.3, yeah more hands, 5.4, yes even more, 5.5, not that many, 5.6, s could be expected, 6.0, yeah we skipped that one, 7.0, 7.1, okay 7.2, 8.0, no okay. So let's, I mean you'll notice I'm gonna give the actual numbers now that come from W3Tech which is actually a very nice site, it gives you an overview of not just PHP but a lot of other technologies and which versions are actually running, how exactly they gather their data comes from, you can find that information on the site. So it turns out I looked at the numbers in 2013, 2015 and now and so PHP 4 is luckily dropping but it's still almost 1% which means if you have a hundred websites running about 1% of them are still running PHP 4 which is kind of scary actually. PHP 5 still makes up the bulk 87.2% of all websites are still running, PHP websites are still running on PHP 5 and the biggest chunk of that is 5.3, 5.4 and 5.5, oh 5.6 has made a major leap now recently. PHP 7 accounts for only 12% but it's yeah it's getting there gradually of course. So these are the main worrying ones 5.2, 5.3, 5.4 have been end of life for a very long time but still they account for a massive amount of PHP installations, about 40 something percent, 50 percent almost of all PHP 5 installations. Main reason for that is for example Debian Squeezy the what is it 7.0 version is stuck on 5.3.3 which accounts for 12% of that and they provided no patches with their default distribution so no upgrades that's a big issue. So before I go and talk about 7.0 let's have a very quick recap or one slide recap of what we've actually done in 5, 5.3, 5.6 because you'll notice that a lot of has evolved in PHP but some of the stuff you might take for granted now but this is what we went through from 5.3 to 5.6 so we did namespaces that was a big one of course. We wouldn't have most modern frameworks today use namespaces so we wouldn't have all that functionality in there.  Go to well yeah we can we can argue about that whether it's useful or not but it does serve a purpose every now and then. MySQL native driver performance gain yeah PHP 5.4 and 5.5 had massive performance gains. The short array syntax which I think everybody is gradually switching to finally. Traits were introduced a built-in web server that we can use for development which is kind of nice as well. Binary notation was introduced. We finally got rid of register globals magic quotes TPC and the thing that was actually not really safe which was called safe mode. We have generators now and we have a nice password hash function so that we don't have to write our own hashing function anymore. Anyone still using their own functions please switch to password hash and we have a built-in opcache so we don't need to install APC or accelerator and so on it's all built in. So that was a lot of stuff that we got in the 5.x release but of course it was time to move forward. Then again 5.6 has been out for a very long time and a lot of people are still not using it. 49.2% of all PHP 5 installations are still 5.4 and before which means you cannot run symphony 3 which means you cannot run Zen framework 3 and many other frameworks on it. That's kind of a problem for developers. So in a lot of companies production servers are maintained by system engineers and they don't like upgrading or they don't like touching something that's not broken and so yeah it's becoming a bigger and bigger problem for PHP developers if they cannot use the latest frameworks obviously. So let's talk about PHP 7. What has changed? Well we have new features. We'll talk about those. We'll have a look at some performance and memory usage improvements. We have a lot of consistency problems that have been resolved and a lot of things have been removed or deprecated and will be removed in future versions. Let's talk about new things. One of the big things. Scalar typing and return type declarations. So what you can do now is you can have a function, some function and then instead of having just your parameters to that function you can now specify hey this is an int or this is a string and I'm going to have this function return a boolean. This has been a long time coming. Some people didn't like it. Some people protested against it but we finally have it. So we have new scalar types in float, bool and string and we can have return types that can be specified and of course they can be one of those scalar types as well. So this is an extension on top of the fact that you can specify objects and arrays in the past. Now we can also have these new scalar types. Now there is still PHP always was a weekly type language and there is still a choice you can make. You can still use these as weak. So you can say okay I have that I parameter, that first parameter. It's an int yes but you can still give it a float. What will happen is PHP will just convert it to an int when the function is called but it's not going to complain. It's not going to tell you hey you're giving me a float but I'm expecting an int. It's just gonna say okay I'm just going to convert it. I'm just going to curse it. So PHP 5 style but it is actually going to convert it when the function is called. The alternative is using strong or strict typing in which case you need to define it at the top of the file. Now when I say the file I mean every single file where you want to use strict typing. To do that you declare strict types equals one. That means if you have let's say an index.php and you include a file in there if that included file has declared strict types equals one it's only valid for that file. If you include another file in it it's still only valid for that file and not the file you include within that file. So that's kind of important to realize that. If you declare strict types and you use the wrong type it's going to throw a type error which is a fatal error. Now in PHP 5 any fatal error would end the program. As we'll see in a minute PHP 7 has changed error handling strategy and you can actually catch a lot of the fatal errors. Returning null is actually also invalid. If you specify that a bull will be returned then returning null will give you a type error as well. So if you say I want to return an int either you return an int or you're going to get an error. There is a way around that we'll see that in a minute. Another new feature the null coalescing operator in PHP 5 if you wanted to get something from get or post and use that information but you weren't sure if the information was actually going to be there you would have to use is set and then use the ternary operator and then use the parameter and then some default in case it wasn't there. In PHP 7 we can make that a little bit shorter to question marks so it's going to use the parameter from the get string or it's going to use the default. And you can chain them so you can say okay I'm gonna try from get I'm gonna try from post and then I'm gonna use the default. So useful feature a little bit less typing which we all like. I had to put a rocket up there because another new feature is the spaceship operator. And if you look carefully it looks a little bit like what are they called from Star Wars. A tie fighter thank you. It looks a little bit like that which is why it's called the spaceship operator. What does it do it compares expressions. It's going to return minus one zero or one so easiest to illustrate with an example of course. If you compare one with one you're gonna get zero because there is no difference between the left side and the right side of the of the operator. If you compare one and three you're gonna get minus one because the left side is smaller than the right side. Five and two you're gonna get one because the left side is larger. The same goes for strings.  A and Z gives you minus one. Z and A gives you one. It also works on arrays. I don't have an example of it here but it's going to compare arrays one element at a time. If you give it a longer string it's going to compare one character at a time until it finds a difference. It finds no difference. It's going to return zero of course. So this is quite useful in many cases mostly in my opinion for for things that are not too complicated. I don't personally use it for anything like arrays. Another new feature in PCB 7.0 is the unicode code point escape syntax. It's a very complicated thing to basically say that you can use hexadecimal string and it will convert that hexadecimal string into a UTF-8 double coded string. So for example echo backslash U curly brace 2615 will output a coffee cup. This one I particularly like and it's something that you don't see mentioned when people talk about PHP 7.0 but if you have to un-serialize data coming from some API call or you stored something in the database or someone else stored something in the database and you need to work with that data then in many cases you don't know what's going to be in there. And of course you only want to get not only valid data but also data that is of the types that you really want. Now un-serializing means you're going to initialize classes in many cases and there's a new option in the un-serialize function that allows you to specify which classes are allowed. Now you could use the first one which is allowed classes and the second one which is false which kind of doesn't make sense because then you're telling un-serialize yeah go and un-serialize but don't allow anything which makes no sense. So you're going to get an object of the type PHP incomplete class. But if for example in the second in the second example you use allowed classes article and user you know that you're only going to get objects of the type article user or again PHP incomplete someone else someone push something else into it. So this is a good way of kind of restricting what is being un-serialized. Also 7.0 CSPRNG function this is a very useful feature to generate random data and not just generate random data but do it in a way that works the same way across all platforms. So depending on whether you're on Linux or Windows it's going to use completely different different libraries for that. For example on Linux it might use a number of libraries and then fall back eventually to dev you random on Windows it's going to use completely other libraries but it's going to generate random data that's cryptographically secure. So no messing around with weird self-created random stuff. There's two functions for that there's random bytes which you can give a length and it's going to produce a number of bytes randomly and there's random int which is obviously going to create a random int between min and max. Of course there are certain things that are deprecating PHP 7. One of them is the PHP 4 style constructor. Did anyone ever build PHP code with a PHP 4 style constructor? Yes some people have been coding for a very long time or have to have to make changes to PHP 4 code of course. So that's deprecated now. You can still do it it also work but it's going to be removed in probably PHP 8. The other thing you can still do but is deprecated and will give you any deprecated notice is when you make a static call to a method that is not defined as static. You can still do it it's not advisable and it's going to be removed anyway in the future. Another thing that is modified is pre-replace no longer supports backslash e which is basically telling pre-replace to do an eval which is kind of evil anyway so you have to use pre-replace callback as an alternative there which is if you do it properly a little bit safer a little bit better. So I said before that error handling has significantly changed in PHP 7 so most fatal errors that you encountered in PHP 5 have now become exceptions in PHP 7 so you can actually catch those. There's a new class called error which means also that if your PHP 5 code currently has a class called error you will need to rename that because it's going to conflict. All the error and exception classes they implement the throwable interface which is interesting to know and it's not just an implementation detail as we'll see in a minute. So when you encounter an error in this case let's imagine that you have a type error because you gave a float where an int was expected the error is thrown by PHP and it will bubble up through all the functions method calls that you have until it hits a matching catch block and then of course the code in that catch block is run. Now if it doesn't find a matching catch block it's going to go to the default exception handler, the default error handler.  This is probably unreadable at the back but these are all the errors and all the exceptions. The exceptions are pretty similar to what we already had in PHP 5. Not a lot of them have been I mean some of them have been added but the errors are completely brand new so we have an arithmetic error with a division by zero error we have that type error before we have even have a parse error which can be called for example if you do eval and you provide it with code that is actually not correct PHP code then it's going to throw a parse error. So what's important is that if you just do catch and then say exception as the type of what you're trying to catch it's not going to catch errors in PHP 7 and if you do catch error it's not going to catch exceptions so the only way to do it properly and to have code that works in PHP 5 and PHP 7 is to catch throwable which is the interface that both error and exception implement but that's not going to work in PHP 5 so you still have to catch exception for PHP 5 as well. It's kind of a workaround for as long as we're using PHP 5 and looking at how long we were still using PHP 4 in production in some places we will need this workaround for a while probably. Now set error handler always allows you to set your own error handling system so you would normally write a function handler and then you would assign that using set error handler however because of the same reasons it doesn't work when you give it a parameter exception. So if you wanted to work in PHP 5 and 7 you cannot specify a type anymore there which is kind of odd because a lot of people have been getting used to specifying a type you can't do that anymore unless of course you want to say oh I don't care about PHP 5 code I'm running everything on PHP 7 in that case you can again just specify throwable. Another change that might cause issues if you migrate code from PHP 5 to PHP 7 is the variable variable handling. This was caused actually by the fact that PHP now relies on the abstract syntax tree so that's basically when PHP is when PHP code is interpreted and turned into opcodes it's going to build an entire tree of what the code looks like you can actually retrieve that from PHP now and have a look at how exactly the code is structured internally but because of the changes that were made to implement that there have been a number of changes now this is this is basically a screenshot from the PHP manual it didn't feel like copying this all over because it's it's perfectly illustrates that whenever you have a specific expression the interpretation between PHP 5 and PHP 7 can be completely different. Luckily you can detect most of these most of the places where this might cause a problem however modifying it automatically is well difficult because you'll need to actually look at the code and say what was I doing here in PHP 5 and how do I need to modify it to make it work in PHP 7 so this is one of the things that could actually break applications now it was never a good idea to do things like that but we all did things that we're not too proud of I guess so it will require manual testing fixing and so on so some stuff was removed as well for example you cannot do global the global keyword and then use a variable variable behind that that's no longer allowed I don't think a lot of people ever did that but it's not possible anymore the salt option in the pretty new password hash function has been deprecated PHP will do that for you it will generate a salt that's good for you automatically other stuff that's been removed ereg is not there anymore the mssql extension is not there anymore the MySQL extension is not there anymore which means you'll have to use MySQL i MySQL native driver and so on we finally got rid of MySQL I mean sorry I don't mean we finally got rid of MySQL but the old module at least side base CT is not there and starting with PHP 7.1 encrypt is gone and we actually encountered last week we encountered a project where we're using brand new code we're using a very modern framework it's built on top of symphony 2.0 3 at this point but it's using mcrypt and so we cannot upgrade to PHP 7.1 on that one yeah as I said ereg was removed so all the functions of course removed call user method call user method array have been removed the DL function is still there but it's not there in PHP FPM anymore because it was causing some issues and everything related to post script type 1 fonts have has been removed as well that's long gone that's ancient history and then there's a lot of I and I function I and I settings that have been removed as well I'm not gonna go through these I'm not mentioning everything that's changed just like the most critical ones a couple of other things that have changed if you have an invalid octal in the past PHP we just cut it off and we just ignore now it's gonna throw a parse error which is catchable so you can actually give a nice error message to your users negative bit shifts should never have been there in the first place if you do it now you get an arithmetic error which again you can catch a division by zero now doesn't give a fatal error it actually gives you a division by zero error and hexadecimal strings are no longer numeric they are now actual strings and of course given the fact that we have a couple of new introductions into the types there are some new reserved keywords and there are some that have been reserved for future use as well like voyage iterable resource and so on they're not reserved today they're not you can still use them for other purposes but it's not recommended anymore however PHP 7 also kind of loosened restrictions on the use of keywords so one of the things you can do now within a class blah you can do function yield which is actually a function in PHP but you can now use it as a the name of a class of the of a method again which personally I don't like very much but it is allowed again to me it's very confusing if I see function yield I'm like what yield yield I know that but that's a function in PHP so very confusing and this has been deprecated for a very long time you cannot assign by reference on the new when you're using new creating a new object it's now going to give you a parser saying that you cannot do that although honestly I don't like the error message because it's not actually telling you what you did wrong it's just saying I didn't expect new which is kind of odd yeah ASP and script PHP tags have been removed I don't think anyone was using those anymore but still and a switch statement can no longer have more than one default block which is kind of silly anyway but yeah you can't do that and the date time zone warning that you used to get after PHP 5.3 if you didn't set it that's now been removed again so if you don't set it it's fine by default it's gonna set itself to UTC the biggest change I think performance and memory usage between five six and seven performance has gone up anywhere and it depends on which application you're using and depends on who's doing the testing really and who's showing the graphs and I'm not actually going to show you any graphs because there's plenty out of out there and they're all different but they all show anywhere between 200 and 300 percent increase of course if your code is three lines you're not going to notice if you're loading the entire symphony framework it's going to be a massive difference what do they do they optimize a lot of things in the core they took a lot more direct approaches less redirection inside the code they allocate a lot less memory for every single thing and every data structure has become smaller for every single data type actually and given the fact that we're constantly tossing data around that makes a huge difference of course memory usage up to 50 drop which of course gives you a big impact on large frameworks sort of things like WordPress or Drupal makes a huge difference so if for any reason I mean if there's if you're looking for a reason to upgrade to PHP 7 this is probably the biggest one because if you have 10 servers running today you could do with half tomorrow now most of these were 7.0 I'm quickly going to tell you what's new in 7.1 as well so I said before that if you want to if you specify that a bool has to be returned from a function and you return null it's going to give an error well that's true except in 7.1 you can specify a nullable type and you do that by pre-pending with a question mark so in this case you're actually saying I'm going to return an inch or I'm going to return null so that's possible now you're also going to get an exception in PHP 7.1 if you specify that you're expecting a parameter in your function and you're not actually passing one then you're going to get an argument count error other changes random s-rand you can still use them but they're actually just aliases now you cannot do this on a string anymore because a string is a string it's not an array although it is it consists of characters but still so you cannot append something to a string like that anymore you're going to get a fatal error the daytime constructor now by default uses microseconds whereas in the past it only uses use seconds that does mean if you create two day times even if you create them on the same second and you compare them they will be different now whereas in the past they were the same because you created them at the same moment yeah SSL version 2 has been dropped which is a very good thing for security reasons there's a new function called session GC garbage collection mostly useful if you have a low traffic site I'm gonna have to speed up apparently if you have a low traffic site garbage collection might not be cold enough if you have a high traffic site you don't want garbage collection to be called the whole time so this allows you to do it manually basically okay oops I was there already there's a new sodium extension which adds a lot of cryptographic stuff as well now and there is a new object type that you can specify so you can basically tell it I'm going to return an object without specifying which type new functionality for password hash newing new TLS version that's specified by default and some stuff that's removed as well create function is deprecated also load is deprecated as well now the magic at least and each is deprecated because we have for each which is much more efficient so the question is should you upgrade to PHP 7 today the answer is mostly yes unless of course you're using any of the functions extensions that have been removed or any of the functions that have been removed if you have no unit s or if you have no packages for PHP 7 available for your servers and you have to manually compile everything you might want to hold off then again it might be a good reason to reinstall your servers altogether or set up new ones postponing upgrades brings you to the problem of end of life whereas in the past the principle was yeah we'll see now the principle is whenever a minor release is brought out add to to that minor release and that one is end of life so and then you still get critical security patches for one year but you get no bug fixes that means as soon as 7.2 came out 7.0 became end of life so anyone who's done a lot of effort upgrading to 7.0 well you're gonna get critical security bug fixes and security fixes until probably the end of the year and then it's gonna be end of life and the same goes for when 7.3 is released 7.1 will be end of life and anyone still running 5.6 and there were a lot of people a lot of hands went up it's currently on security patches only and by the first of January it's going to be end of life no security patches whatsoever so that will be the end of the 5.x release so you have about 11 months well 10 and a half so if you're on PHP 7 or 7.1 start upgrading as well to the latest version again because of course that's the biggest one 87% still but yeah and I don't have to tell you main reasons are security performance framework support symphony 4 requires 7.1.3 Zen framework 3 requires still 5.6 Laravel 5.6 also requires 7.1.3 and it's just a good idea to keep every single developer motivated so that they can use the latest the latest tools so couple of ways you can upgrade of course you can run all your unit tests you can try to visit every single page on your website or you can try to automate it using static analysis and that's what we're gonna have a look at now so back in 2010 I had to do this for about 40 different projects when I was working to Belgian Railways there was code there from PHP 4 and PHP 5 and we had to migrate all that and I thought how am I gonna pull this off and then I thought I'm gonna try to automate it using our continuous integration environment we have some unit tests let me put all the projects in there even the ones that don't have unit tests and let me use a tool called PHP code sniffer who here uses PHP code sniffer was anyone yeah quite a few okay oops so PHP code sniffer was originally a pair package it's now available on the composer as well it's been mostly rebuilt recently for version 3 and it is actually designed to detect coding standard violations so it will tell you hey you're putting this curly brace there and you should be putting it on the next line or you need to use spaces instead of tabs that's what it was designed for it supports multiple standards so of course it supports things like psr2 but it also supports the Zen framework coding standard or any other that you might come up with yourself please don't and it is a static analysis tool that means it goes and analyzes your code without actually executing the code so it's gonna split up your code into what they call tokens so a token could be open curly bracket or false or a semicolon those are all tokens and it's gonna parse every single file separately so if you run it and I'm gonna show that now so I have here an index dot PHP so if you've installed it which you can do with composer you can run PHP CS code sniffer dash I and it will tell you the installed coding standards are and then you get a whole list and now I can just say okay I'm going to use a specific standards I'm going to use the Zen standard for example and I'm going to run it on my current directory which only has one file in this case and it will tell you oh look I found an opening brace of a class it must be on the line after the definition and so on or consider putting global function test in a static class so it will tell you everything that is not correct according to the coding standard switch back now that would be nice so I wrote a tool to do that migration called PHP compatibility and it is actually what they call a standard in PHP code sniffer you can install many of those standards each have different rule sets in there and the only purpose of PHP compatibility is to find compatibility issues so it's not actually coding standard it's just going to look for what it can find that might not be compatible with other PHP versions so it's going to detect deprecated functions deprecated extensions prohibited function names or class names and so on it works for anything starting from PHP 5 and above to make it work it's very simple if you use composer you can just install the package that's located on get up it's whim g slash PHP dash compatibility and then you have one step that you still need to do because you need to give code sniffer the location of the standard otherwise it doesn't know where to look for it so if PHP compatibility is the only coding standard that you have installed you can just add a script that's very easy I will put these slides online by the way so you can use this as a reference as well if you have more than one coding standard there are a couple of additional packages that you can install to automate that process as well if you don't use composer you can just download the package and again run config set and give it the path where you installed PHP compatibility so as I said PHP CS dash I tells you which standards are available and then you can actually just specify which standard you want to use now what's important is if you have a huge directory this could be very slow if you run this across a huge installation with a vendor directory that contains 300 packages it's not recommended you should never run it across the vendor packages they should do that themselves you should only run it across your code however you should definitely always use dash extensions there's no point in scanning JavaScript files or images or videos or something like that it's not going to contain PHP if you want to test for 7.0 compatibility you need to run your tests on a 7.0 installation of PHP otherwise it's not gonna recognize certain keywords and again it doesn't actually run the code which means it cannot detect every single incompatibility some things only happen when the code is actually running but it will provide you with a file name and a number of course so let's have a quick look at what that looks like so if I say no I'm not gonna run Zen I'm gonna run PHP compatibility I made a typo compatibility so I'm going to show you that file first so I have a file here and it's it has a for loop with a break in there for example a break with a parameter which is no longer allowed in recent versions I also have this little weird thing that I already mentioned before that's different it behaves differently in PHP 5 and PHP 7 I also have a PHP 4 style constructor here and I'm doing a new with by reference which is also of course not allowed so let's have a look if we run it across it it's going to tell you oh you're using a variable argument on the break which is correct that's forbidden since PHP 5.4 so that's an error you're having indirect access to variables it has changed left to right order and things like that so you might want to check that then there's the constructor which is currently deprecated so it's not an actual error it's a warning and then of course that new with by reference that is forbidden in PHP 7.0 so this is kind of the output you would get we'll run it across a couple of other things in a minute now by default it's going to check for the latest PHP version so in this case 7.2 is what what is defined in PHP compatibility but you can specify on runtime you can say no you need to test for 7.0 for example so source there here is the the directory you want to check of course or you can say I want you to check for 7.0 to 7.1 or anything 7.0 and higher which you can also do the opposite so you can say I'm coding on my machine I'm writing code in 7.2 but my production environment is running 5.6 for example so in that case you can specify oh come on let's say 5.4 yeah so you can tell now that I have one error less I think yeah so if I go to 5.2 for example it's going to do something completely different now it's going to complain about the fact that the int type declaration is not present in an older version so if you're writing code on 7.2 and you're trying to deploy it on 5.6 and you're not doing any checks you might actually break your production environment if you run this across it it will tell you you're using this functionality but that's not available on your server so the bool return type is not present in 5.6 having issues here okay now you can also disable warnings because sometimes you're going to get warnings about one specific rule in there you can create a phpcs.xml file and in there you can put something like yeah I'm using PHP compatibility but I want you to ignore that specific rule because of the fact that you know about it it's not a problem for your specific installation every now and then it will give a false positive it will tell you there's a problem here because you created a very complicated code maybe with a lot of a lot of curly braces in there a lot of other braces in there and it's going to say who I think this is a problem but in fact it might not be a problem also here you can specify the test version so this is a way of kind of automating on the continuous integration side of it there are a couple of other tools there is that will do the same thing for WordPress there's a PHP compatibility checker which actually uses PHP compatibility and it will run across all your plugins and tell you hey this plugin is not compatible with PHP 7 so don't upgrade your server because your WordPress will not work anymore and then you can have a look whether there's a new update for the plugin or maybe you need to switch to a different plugin but at least you know there's in PHP storm 10 and higher there is a PHP 7 compatibility inspection but it will do most of the inspection only on the parameter types it doesn't do a lot of the other things this one is a very interesting one and I know there's a talk tomorrow afternoon that will focus mostly on PHP 7 cc which is a very similar project to PHP compatibility it's slightly less up to date I think the last update was in April last year but it has very similar functionality and in that talk tomorrow I know is going to show some comparisons between the two so I'm actually very curious about that and then there's also fan which was built originally by Rasmus Lerdorf the creator of PHP which is a general static analyzer which does a lot more than just compatibility checks in fact the compatibility checks are very limited but it does a lot of other code checks that are very interesting to have a look at and this one actually is a docker image that uses all of the above you can just run it across your code and it will run all of those automatically and will give you a bunch of reports with all of the tools without having to manually install all of them so it's just kind of automated tool so to conclude there is no way to 100% detect all compatibility issues but if you can automate like 95% of it that's a big gain of course first install PHP compatibility or one of the other tools on a local machine but please use it in your continuous integration environment because today you might upgrade to PHP 7 but then you need to go to 7.3 at some point and 7.4 and then maybe 8 so it's going to help you all the time it's going to be a continuous non-stop check for your code so start upgrading how much time do I have left about 10 minutes for questions okay I'm gonna do one small little thing that I want to show I install Laravel and I thought I just run PHP compatibility with the latest version of course across that oh yeah so there is one very nice feature dash p gives you progress which for very big tests can be useful to see that actually something is happening and I noticed yesterday if I tell Laravel if I try it with the Laravel framework and I say PHP 7.1 that it's actually going to tell us that there is a problem and I should ignore warnings because we're gonna get a lot of warnings here yeah empty files will also be reported as hey there's no code in there that's a problem but you can ignore that you can in fact disable that warning altogether but you can tell that there's an E when it says error w is a warning and so what you can see here is that actually Laravel requires PHP 7.2 in fact the latest version which is not out it was a master so yeah a lot of the big frameworks and now actually on the very very latest version of PHP so upgrading is the the task at hand right now


Hi, how's everybody doing today? I'm your host, Rich, and we have a Rich TV Live with our very special guest. It's Jay Park, who is the CEO of Cadillacs. How you doing today, Jay? I'm awesome. How about you? I'm doing fantastic. Thank you for joining us. Can you tell us a little bit about yourself and how you got involved with Cadillacs and why you decided to partner with Lightlink? Well, I'm one of three co-founders of Cadillacs and basically three friends that three years ago saw Bitcoin just explode and before that, I've heard of it mostly through friends that say their computer got hacked and it's been taken hostage and the guys want a couple of Bitcoin and they'll release the asset or whatever. Hackers? Yeah, hackers and stuff like that. So I'm like, that sounds really shady. And then basically three years ago when we saw the big run of Bitcoin, a lot of people made money. It made the news and it piqued my interest for sure and started with a small mining operation that we set up at my friend's farm. So basically the farm because there's really cheap electricity and we ran a power and internet to a, what do you call it, a can, a shipping can and we set it up and basically plugged in and we saw that we started to mine Ethereum and Bitcoin and it was actually working. So after that, we're like, what do we actually do? There's nothing to do in a mining operation, but like wait. So we looked around and there was an opportunity to open up an exchange because my heritage is Korean and we had some ties and some news with some Korean exchanges just exploding. So we're like, so our three partners or founders said, let's try to build this thing. So that's kind of where it started. And three years later, we're in this position today. That's great. Now, what are the main focuses of Lightlink and Cadillacs for the first half of 2021 and what sets you apart from your competition? Well, I have to start to answer this question by Cadillacs is currently in my eyes, in my view, the best cryptocurrency or digital asset trading platform that nobody knows about. So one of the things that we needed for sure was marketing strategy and also a lot of people getting to know our platform and brand. And so that's why we work so well with Lightlink. They have a great network and they complement our skill sets. And so when they made us the offer to purchase a minority stake in our private company in our platform, we saw that there was great synergies because we're great builders and we're great operators. And Lightlink could get us the eyeballs, they could get us the exposure. So we're really excited to bring our offering to many people in the Canadian market. That's great. The blockchain space and the crypto markets have really been picking up Bitcoin all time highs and so many other cryptocurrencies are following suit. How is Lightlink and Cadillacs positioning itself to become a leader in a space that is just exploding with so much competition? Great question. I'd say what differentiates Lightlink and Cadillacs is first are liquidity, meaning there needs to be orders being processed through the platform at a very, very high rate, a market being made. Currently, there is no Canadian native market for Bitcoin or any cryptocurrencies. It's all based out of either the US or Asian markets. Canada is just too small. Cadillacs, if you have experienced our platform, is the closest thing to a native Canadian cryptocurrency market, meaning liquidity. And depth of order book. So what a lot of the exchanges are doing is they're opening up a corporate account on, say, a US exchange or a Chinese exchange or one of the big exchanges. And they're executing their whole order book through a couple of corporate accounts. That does not mean that you have the liquidity and you have the order book of that exchange. It just means you're buying it at a wholesale rate. What we represent is if you've actually followed our order book is the highest liquidity in Canada and also the depth. And what that means is if you try to execute a full Bitcoin, one BTC sell on any platform in Canada, a lot of the orders will not be filled. Why? These exchanges have a spread, which is a lot of the market about $200 or $300 spread, but their actual spread on their order book is about $1,000. So if you're off on when you're trying to sell a BTC or Bitcoin, $1,000 over market, it will not be filled. No one's going to buy it, right? If you actually try to purchase or if you try to sell on Cadillacs's platform today, it will be filled instantly at market price. We have the tightest spreads in Canada, not just advertise spread because everyone says, look at our spreads, it's only $200. But if you look at their order book between their sell and their buy, that spread is above anywhere as low as $600, $700, as high as $1,500. So when you're that far apart on your orders and they're tying in directly to the US, no one's going to buy their marked up BTC. And so what you see is small amounts of Bitcoin, like 0.1, 0.2 Bitcoin being filled, but anything about 0.4 Bitcoin, it's just stagnant on people's platforms. So that's what we represent. Like I said, I truly believe I've seen the marketplace, I've seen the competition. There is no competition. If you for serious cryptocurrency owners and traders, there is no competition. That leads me to my next question. So based on the press release, you just mentioned it, Cadillacs has the tightest spreads and lowest prices in Canada for Bitcoin and other coins. How do you do that? Like, can you explain how you're doing that? Well, a lot of it is with our partnerships and access to technology that is not just a wholesale account. So I'm not just Cadillacs does not just have a corporate account at finance or who will be or another big exchange. We are actually representing these big liquidity providers order books. So that's how we can and we're taking on all the effects, risk, and we are actually offering a CAD pairing, BTC or Ethereum or any of the other altcoins we offer on our platform. So that is the biggest difference. So we do it with technology integration with our partners and we have that relationship. And we've been building that relationship and secured that relationship over the last two and a half years. Now, there's a lot of hacking. We talked about a little bit and theft that happens in the crypto space. One of the things that Cadillacs also has is that you protect investors from hacking. Can you go through some of the security features you have in place at Cadillacs that is protecting investors from hacking and theft in the crypto space? Yes, well, first thing it starts with our partners with their wallet technology and also the technology that is protecting their cyber entity. And then it goes to us. So basically, if we're the portal and the gateway, we need to basically be secure as well. So those two pieces combined and knowing full transparency what we have in place is our rest assured. For me, I have to sleep at night being the head of the company and the founder of the company that not only the company's assets, but thousands of people, deposits and assets are secure. So we are on the cutting edge of security. Does that mean that it's hackproof? No, no entity in the world, I think, can make that claim. But are we doing absolutely everything possible? Yes, are we using the best methods and best tech to be able to do it? Yes, are we reviewing reviewing these policies on a regular interval? Yes, so that system and that constant review and that constant looking for the next best thing because hackers are working 24 hours a day, they're looking for an end. And so we have to be as vigilant in finding solutions to be able to protect against these threats. Can you tell us a little bit about FastBitCash.ca and go through some of the features for us? Well, FastBitCash is, I guess, my answer to or or Catalanx's answer to the Canadian market. So I looked at a few reports late last year in 2020 saying five, six percent of Canadians own Bitcoin or digital assets. So and that number, it seems very, very small to me. And I said, you know, we have this great world-class trading platform and it's great for about 3% of the population, the people that are really knowledgeable, that have the experience in markets and trading options and a whole world that the general public does not. And so I said, what does what does the average Canadian because we have 6% of Canadians owning digital assets? I mean, for me, that number year after year is just going to grow exponentially. So I said, why is it so hard for somebody to buy their first Bitcoin? And so I looked at a lot of the problems because if you're entering to the platform first, you don't know the company or the or the or the exchange. Second, it it needs full KYC. It needs all these things that you need like Google Authenticator. And maybe it sends an SMS security code here. So a lot of the general population does not is not used to that level of I guess hands on. Let me figure out the tech part just to own a Bitcoin. So what we've done is removed all the big obstacles, made the user interface and experience very, very friendly and very familiar and said, I challenge I challenged our team and our engineer say, I want to see if we can technically have from a sign up to funding to purchasing the first Bitcoin, do it in 60 seconds. So that that was our challenge to our team. And we've actually been able to do it. Mind you, you have to type really, really fast. Maybe the average person does it in 90 seconds or 120 120 seconds. But but I guess the the end goal is when you want to own your first Bitcoin is just probably only like maybe 100, 200, $500 worth. We wanted to make that first transaction super easy. So you can so you can not necessarily touch it and feel it, but it's in your account. You can see how it's moving. You start to develop a emotional connection with the asset and you get curious. And so what's it so fast bit cash is actually powered by Cadillacs. So when you sign up for fast bit cash, your your login information will automatically be able to log into Cadillacs. So if you want to get serious and trade it for Ethereum or cash out or sell it or buy it again, you're able to do it. I love it. This sounds great. It sounds like a platform that myself and our community can really wrap our heads around. And I agree with you. The only exchange I've used in Canada that has allowed me to actually sell Bitcoin and transfer into my bank account is Endax. You're familiar with Endax. I've been using them for years, but even with them, it's not that easy to buy anything. So to have a platform where you could just go buy Bitcoin, do transactions and be pairing with Canadian dollars. I think that's brilliant. And it's needed. It's needed as someone who's been in blockchain and cryptocurrency since 2017. It's needed. And that's the reason why Canadians only 6% own it is because there's never been an easy passage to own it. Like in America, they have Coinbase and anybody can go open up a Coinbase account and then you can it attaches to your bank account. You can sell and then transfer the funds into your bank account. As a Canadian, we don't have that option. So I had to search for Endax as the only broker in Canada that gave me that option where if I received Bitcoin, I could sell it and then I could transfer the funds to TD. So I think what you're doing is actually very brilliant and it's not necessarily a want. I believe it's a need. So I think it's really great what you guys are doing. If there was one thing that you would want shareholders to know about Cadillacs and your relationship with Lightlink and what you guys are doing today, what would it be? Well, we are doing some very, very exciting things. Faspid cash is right. It's I got a notice yesterday from my engineers. They said tomorrow. So today is February 9th, so February 10th is the day that we launch. Wow. We're not we're going to be definitely doing a soft launch. Because we really want to wait for the right time to do the press release. I think it, you know, three, three to four weeks later. But we're excited about that. I wish I could tell you everything that we have lined up in the in the pipeline. Some of the deals I'm not able to disclose at this moment. There are some sensitive matters because. But I would say that for Cadillacs and for Lightlink, you know, look out for for news because we're we're the best platform that nobody knows about. But we're we're about to change that. I like it. I love what I'm hearing. What is the best way for shareholders to get in touch with the company? We have a chat bot that links to a real person that is the Canadian. And we we answer within a period of time. Also, Facebook, if you if you like us on Facebook and send us a message, we respond that we respond to that regularly. Also, we have email and it's listed right on the the the website that we respond and monitor regularly as well. OK, great. Well, thank you so much for your time today. Jay Park, the CEO of Cadillacs, a company that is working very closely with Lightlink. Lightlink exploded today, had a monster day. And I believe with all of the different catalysts that are coming that you're talking about and all the excitement and blockchain that this may just be the beginning for Lightlink and Cadillacs. Now, guys, remember, Rich TV Live is strictly for education and entertainment purposes. Always do your due diligence. Always do your research before you invest in anything that we talk about here in Rich TV Live. Always invest in the best, the best is blessed. And remember, if you're not winning, you're not watching. We're bringing the winners and we're bringing them to you first. If you like the video, please smash the like button. Comment down below, share the video everywhere and subscribe. But thank you so much for your time today, Jay, for joining us, the CEO of Cadillacs. Hope you have a great day, Jay. You too. Thank you for joining us. And for those of you guys that are watching all over the world, put Lightlink on your watch list, put it on your radar. I'll have in the description the symbols for the Canadian, the US and the Frankfurt listing. Thank you guys for watching. I'm here with the CEO of Cadillacs, Jay Park, saying, have a nice day.


This doesn't seem fancy enough. Ah, yes, that's perfect Hey guys, so I'm doing another television show review series. It's for Versailles This is a television show that's on ovation at Saturdays at 10 p.m Both Eastern and Pacific time and it's all about Louis the 14th and the creation of Versailles Doing this as a part of partnership with ovation So this is really cool and really honored to actually get to do this and it's also about a Not so much talked about portion of Francis history just the creation of Versailles So the one thing I'll definitely say there are two things about this show that are very Very good right off of that is one is the cinematography is absolutely nuts the shots the lighting everything is very well done As well as the costume design the costume design you can tell the people who are working on a both hair makeup and costume are just having an absolute ball Because of how intricate how mitt whole multi layered how Absolutely amazing the costumes look in this show When you're working on the show like this your corset really implements your character because you can't breathe the certain ways that you can't stand Are you in the habit of loitering around ladies dressing room? That was also a way of making women feel inferior because they couldn't do anything. Forgive me, sir Originally they were made in well teeth and they had sometimes some pieces here on wood or iron just to make sure it's really standing up The more money you have the richer the fabric where and the longer your dresses were it's yet another 10 kilos to carry you with me The difference is now the the bodies of the women are more free than they were but it took a long time centuries It's great to have this perspective to think about how it was back then and how is it changed now? So the first episode is about what happens after Louis's mother dies And he has this vision of what Versailles will be and this whole episode was an introductory Into all the parts of his team his brother his concierge the doctors It was basically establishing the cogs in the royal wheel the show also reminds me of two other shows one undoubtedly down to Navi just because of it talks about sort of the lifestyle the General practices and what people did in the time as well as it also reminds me of the tutors just because of this sort of hypersexual Very vibrant very dramatic sort of tension of a historical drama, and I like that aspect I like the tutors and I'm so far I'm very much into the show something that I really liked is it also talked about just the limits of women and This the absolutely absurd Sort of restrictions we had on them There's one of them who is the daughter of a doctor and she is following in his practice a problem Is he says that if she gets too involved in it people will think she's a witch because she's smart And that's just why the reason why I like this show. It's very period drama It's very interesting the whole idea of this show is not only are we seeing how Louis's gonna build the Versailles But also we're gonna see just the lifestyle of his family his own lifestyle just limits the limitations Advances and also just the general rules of life back then and I'm very much interested in how this goes The first episode admittedly has a bit of a slow burn There are some moments where admittedly while the cinematography is very good people come into rooms And you don't really get it they're more so the sense of direction is not very well done because all of a sudden Someone's in a room or someone's right beside someone you're like where where did you come from? How'd you get there? Otherwise that's the only sort of complaint I have that is a little bit of a slow burns a bit to get into but by the end of the episode you're like I want to watch the next one. So I'm gonna give the first episode of Versailles a four out of seven It's a very good intro. It's a bit slow. Yes, but definitely the last ten minutes You're like so I'm gonna be reviewing all the episodes. I'm gonna be trying reviewing them We periodically I have to catch up mind you because they are on the fourth episode that just aired a few days ago So either way, I hope you guys enjoyed this first review I'm very honored get to do this and hopefully I'll get to use one of these fancy little tea cups here Anyways, that's all for me. I'll see you guys next time You are the king of our future. He sees the sign nothing else He's forgotten who built this country They need to kill me let them come let them try We do whatever it takes to survive Holding over sign must be stopped. We'll miss an all-new episode of Versailles Saturday at 10 only on ovation


Guitar and Excel see major a minor seven note scale as opposed to a five-note pentatonic scale We talked about in a prior presentation starting on fret number seven fingering Get ready and some coffee because I don't like the phrase good luck You know because because I make my own luck dang it Unfortunately, I lost the recipe though. So it doesn't always come out good But but excel is helping us sound out right down and record our recipe mix as we go So although at times our luck may be a little too salty. It is improving However, sometimes I feel like I'm moving too slow wasting my time trying to improve my luck time better spent looking for Grandma's old luck recipe book instead of trying to reinvent the four-leaf clover But whatever I'll take the scenic route. It's more interesting that way As long as you can avoid poisoning yourself With which is more difficult that I originally thought man, there's a lot of poisonous stuff out there But that's that's why you let the dog lick the spoon before you try it, you know Anyways, let's get to it. Here. We are in excel if you don't have access to this workbook That's okay. You could just follow along, but if you do have access It's a great tool to run scenarios with quick recap of the project thus far noting that you don't have to have watched All prior presentations to follow along with this one, but a general overview of the overall project can't help to orientate Ourselves, let's go back to that first tab then to take a look at that Overview we're looking at the C major scale and related modes We started looking at it in open position, which we defined as frets zero through three Remembering this E represents the low heavy string the one closest to the ceiling Funnest way to learn the notes in open position is to map out the chords in the scale in open position Which we did starting with the one chord C major chord mapping it out Discussing it in detail. We then went to the four chord because it happens to have a major chord construction mapped it out discussed it in detail then the five chord the same and then the two chord which is a minor chord construction The three chord the same the six chord the same and then the diminished chord the seventh chord After having done that if we mapped out all the notes in all the chords in open position We would be mapping out all the notes and the C major and related mode scales Which would look something like this in the open position We then wanted to move to the middle of the guitar starting basically on fret four or five and Think of this not in terms first of chord construction But in terms first of creating scales that we can then tie into the chords that we learned in open position So we looked at this position and then we zeroed in on particular notes From the scale each note within the scale in that position Then we did a similar process moving up to the second the next position I would call the first one we looked at position one or g-shaped position We then moved to what I would call position two or an e-shaped position We discussed it in detail and how we can basically tie into each of the notes within it to what we learned about in open position and the fifth fret and now we're moving to the next position and This is where we are working at this point in time our focus on fret number nine here So let's give a quick recap of our Color schemes as we go through this position So we have this is our fretboard once again This e represents the low or heavy string the one closest to the ceiling the green notes Represent the pentatonic five out of the seven notes Which we talked about in a prior presentation You can see those up top and now we've added the two notes that make up the full Major scale and related modes. Those are the ones in blue So I would think of it as though we first lay down all the notes in blue Meaning all seven notes are underneath on the bottom And then we put on top of that the pentatonic notes which are picking five notes out of the seven note scales and Those are going to be the green notes that are on top the green notes then fitting inside of the blue notes as We talked about in a prior presentation when we look at the five note pentatonic scale Then it only works perfectly if you think about it as related to the modes of the major scale or Ionian and Then the related minor or the Aeolian Modes and that's because with all the other modes that we take a look at these two notes become vitally important because they're going to be part of Oftentimes the major or minor chord construction, which is going to be a key Note within it so our mindset then a lot of people really like learning the pentatonic because it's so flexible and Then if they're playing a different mode You might add like the missing note so that you build and your root thinking is really pentatonic scale But I tend to like looking at the full major scale And if we learn the full major scale this way Then we're also learning something that we can fit into all the different modes because basically we can then focus in on these Different notes and look at those different modes. So we'll talk about that Shortly here. Those are the color schemes and then we have the open position that we started looking at And then where we went to position number one I call it position number one because it's generally the position most people start learning From just a pentatonic shape for example So I had to open it up a little bit there But we have and you can also call it a G shape because you can see this G Basically shape fit into it. Remember, we're talking about a C major scale and the related modes If I tried to build a C major you've got your C Here that's going to be the shape that you can kind of construct and you can see that looks like a G shape if it was to be played in The open position so if we pull out the trusty guitar We've got our G shape here if I move that up to here Then you could see those notes are within it these notes I would have to basically bar off which is difficult to do as a bar chord But we can still use that G shape to kind of build our chords So then we can move up. We could see the overlap between position one and two and you can also call this then a E shaped position because again if I look at that C right there and I build my Chord from there you get something that looks like an E shape Which if it was an E major it would be back here if we're up here We get that E shape so you could name it that Remembering now that we've added these two other notes. However, that this these shapes will fit in multiple Scale shapes within a five fret interval because we have seven notes But when we only had five notes the pentatonic These shapes would be unique to the five note pentatonic these shapes only having three notes within them Because we're talking about chords which have three notes So we have the three note chords We can use to then name the five note pentatonic which will fit uniquely Into one of the five positions and then can also used to name the seven note major scale around it being careful However, then because these shapes could fit in more than just one Position on the fretboard. Okay, and so then and then so then we're moving up to the next shape Which I would call position number Three which is going to be our point of focus at this point Which you could call the D position because if I look at that C right here I also have a C down here and the shape that we would be making would be a D. It's basically a D Type of shape which what hold on it would look like that and you could see this position Most people kind of recognize it up top here with these Shapes if we were looking at it in terms of a C major as opposed to the relative modes But I'd have to kind of lean back and pick up that C right there Which makes it difficult to hit that one So that's going to be basically the shape that we are focused on at this point in time And we just added these blue notes. So that's where we're at So now we're going to be looking at just the fingering of it last time we looked at the finger in in terms of a pentatonic Shape we're just going to be adding this added this added two notes Now note the difference between this and a pentatonic shape now you have those half steps You'll recall that if you just look at the green notes We've removed basically the half steps and so now we have brought them back in That's nice because the half steps although they can kind of mess you up when you're switching around They also can add a lot of flavor because that half step gives you the lead in Oftentimes in a major scale and they can also cause more dissonance Which is the thing that causes problems But is also the thing that gives a lot of music more flavor you want to know where those kind of Those items are because all of the music you're trying to make is trying to create tension and then resolve the tension Generally in in interesting ways also now since we have the full scale Remember that we're not only just learning the C major scale We're really learning if you learn the shapes all of the different modes Which is the great thing about learning the major scale because you don't have to kind of think about a five note Scale and then add what you need to add if you want to be thinking about a different mode You could just say I'm just going to learn this This whole shape and then if I start on any different note Starting and stopping on the different note if I play around that note in other words I can make it the tonic So you're really learning at least a six if not seven because The the the low Korean is not a mode that people typically play all the time but if you if you learn the scale you can kind of think about playing it in Basically six different ways which would be basically like six different scales, which you might think well It's all basically the same thing, but it's it's really not because Like like if it really sounds a whole lot differently if you're playing around the D as opposed to Playing around the C and it does take time to try to switch your mind from saying okay I'm using the C as the tonic and then I'm going to play the same notes But make the D the tonic or the E the tonic or the F the tonic the central point But it's a lot easier to do that once you know the shape and you kind of keep your mind in sync on what you're doing also, remember that once we learn all of these notes and chords and related modes in this particular position you can move this whole shape Somewhere else Noting where that C is right? So if I move that whole shape over here Making the C the a right on that's on that string and I move the whole relative position There then I can I can play the same Relative position I might not even know what I'm playing But I can know that I'm playing around something where the a would be like an a major kind of Thing and I can play the same thing. That's the beauty of the guitar. It's symmetrical In that way, but we want to keep our mind kind of focused on what we're doing So the fingering is something I would practice like in the evening often times But even when you're practicing in the evening when your mind is like not really fully working It's useful.  So you want to be saying where am I starting am I starting on a C? am I starting on a D and then and then start and stop on that note now if I want to play in a C note that this C is in the prior shape But that's a great starting point because then you could start from the C there or you could start in the C like in the Middle here. There's your octave So we can say alright I'm gonna first start it back here. So I could say I'm on a C I'm gonna start it on the C major and I'm gonna slide into my shape and it might help to actually count out as well So I can say there's my C and then I'm moving in so I'm going from this C Here and then I'm gonna kind of stop at this C and if you can count again That's makes a little bit more difficult. It's that'll give you another element when you're learning this And then I should be able to hear it kind of resolve in my mind to there, right? And then we can go of course back so we could say all right eight seven six five four three two one To give it a little bit more emphasis. You might also put the Chord on what's your playing so this or at least the power chord So you say Now I'm playing the key of C there's my my C which is an E shaped C chord and I go One And now I can play my D shaped C right there And then of course I can keep on going up and I'm going to keep that focus of the C on the shape So I'm going to say then I'm going to go C So I'm going to go one two three four five six seven eight so so once I get to Uh the eight there where am I I'm not I'm not see I should be on this C over here Sorry about that Then I could play this little D right there D shape it's a D shaped C And then I can go one two three four That brings me up to this F and then back four three two four three two one play that little Shape right there and then I'm going from this C back down So I could call this C the one or I might call it the eight which is a little bit easier when I'm counting down So I'd say it's going to be eight seven six five four three two one And then I'll play my shape again Which is going to be built off of the C. It's this one this one and this one the C the G and The E notice I altered my fingering a little bit so that I ended off on my pointer So that I can then play my Shape here So you're going to have to play around with what you think the best fingering is As you work through the shape and then of course we can bring this one back to here So once again, I'm going to say that's an eight eight seven six five four three two That's the last one in the shape and I would go back to the prior shape sliding into it and there's going to be my E There so so obviously once you get that shape down you can work on your speed and so on and your and your tempo within it And if as long as you're playing it and you know where you're starting and stopping Then you can start playing around certain areas Like each of the notes out within the scale, which we'll talk about doing more in future presentations But just doing the fingering Would be great But again, just it's a lot better if you do the fingering and don't just think about This shape and this position But this shape and what's the What's the what your tonic that you're focusing in on within that shape? And that'll give you that'll I think it'll go a lot further I mean, I I didn't do that when I was starting and I think it would be way better if I did I'm going to move this one Out a little bit so we can look at this shape a little bit more easily now once you do that You can then think about this the next All of the modes which we'll talk about more later But notice this this whole seven notes lends itself To do the same thing on the modes So if I was to say I'm going to think about this as the minor mode here Let's make this a little smaller And go to do it and so then I can make it Even a little smaller I think it's still seeable Okay, so now I can say well now let's play around. This is the The Related minor so that would be like making the six the one So now I could say okay, let's Jump i'm jumping to the a because that's the next most common Scale so I could say all right well if that's the c I can say a and and be playing around basically The a minor Here so I can think about it as the six or I can think about it as the one Of the of the related a minor scale and I can play that same thing and just start from here now As basically, you know my tonic and I can play it it as the six Or as the one so if I want to play around the six Then I could start and stop on the six so I could say well, that's like saying it's the six of the c six seven eight or one two three four five six Right, so now I'm back to the to the six here or I can do that in terms of Making it the one for the related mode, which is the a only and or a minor mode making it the one two three four five six seven eight And then I'm back to that one again now again. You might want to make Your chords within here. So if I built my chord construction, this would be like an a minor uh Chord or you might call this a a c-shaped a minor chord. We'll talk about how to build that later, but You know you can play that and then play it out six seven eight one Whoops would hold on six seven eight or one two three four five six And then when you're down here, you could say, okay, how can I build my chord there? We could build it like this way It's one way you can build the the minor chord down there We'll talk about that more later once we focus on each of the notes Within it and then we can keep going up and say this six seven eight one two three So now I've gotten to that f that's as far as I can go so I can go back down So three two one eight seven six They could play like a minor And then we can go back down from there so we can go Six five four three two one or eight seven six And then we can play our minor here So we can play through that same shape With with each of these if I went to the next one down the d the dorian we could do the same thing So let's hide this out to the dorian So I'm going to say hide And so now I'm making the d My central point and we'll focus more we'll do this more Later, but just to get your idea just when you're fingering this one scale You could start Just fingering it in different ways so that you can get a different sound in your mind And you can really easily play it like I say six different scales Uh seven if you include the locrian that's not quite common to play in So right and then I can make the d I could play around the two Or if I want to call it the dorian I'm just going to reorientate everything to call it the one So right so I could say if that's if that's where my starting point is If it's the two I can go from two to two So our octave is up here So if we count that out we could say two three four five six seven eight or one two There's our octave we can convert the two to the one making it the dorian So then I can just count it out as one two three four five six seven eight or one There's the octave we know that the two and the dorian starts off with a minor It's a minor mode. So we could make a minor scale like that And then play through it. There it is boom two three four five six seven eight or one two then we can construct A minor like this or like that and so on we could do the same thing if we kept on moving through We'll focus more on this and in future presentations But obviously if we moved to the e Then all we're doing is saying okay now i'm going to play the same things But look at that as my center which is basically playing In the fridgian. So now we're going to be like, okay So now I'm in essence playing in the fridgian. I'm going to say there's the e We know that the fridgian is a minor mode because it has a Little a lower case here. So it's a minor mode construction. So I can see it as either Playing from the three to the three of the related c major or Make the three the one in which case we would be playing in the fridgian Basically the same thing right so you can play the same notes here But now I'm just saying all right. I'm going to start right there So there's the octave And then if we make it the one we could do the same thing here We could say this is going to be the one two three four five six seven eight there's The octave and of course if we make the three Into a chord it's going to be another minor mode the fridgian is going to have the minor more mode So we could build it this way which is like a g minor shaped e And so you can play the the the chord and then go through it. So this is going to be And then I can call it one two three four five six seven eight and then So we'll do more of that later and then of course we can keep going with this we could say, okay What if I made the f then the starting point? Well, then then what would we be doing if I hide this out in terms of modes? We would be playing the lidion. So I'll hide this and Go back on over so now we'll play the same scale But now the f is the central point. So we're going from here To here and I'm just playing the top bit We'll talk more about these modes and how we can look at and focus on each of these Later and we'll talk about modes in particular in more detail later. But for right now, we're going to say, okay The f I'm going to play around the f which is this note as basically the one I'm just going to play the same scale and be thinking about it as the one Or playing around the four so I can start from here and say, okay now I'm going to practice the same scale, but there's the the in essence one Well, let's start with the four that I'm playing around four five six seven eight or one two three four There's my octave Sometimes the the playing around the four can be a little bit difficult to make it sound like the center But it is doable if I convert it to the one I could say, okay, so if I make that the one two three four five six seven eight or one the octave And we know that this the four is a major chord construction Therefore we know that the lydian is going to be a major Mode right so I can build a major scale from that which would look something like this which is a g-shaped Scale and then you can play up from there one two three four five six seven eight or one And so then if I do the same thing and we go, okay, let's do this next one and go down to The g So the g is going to be if that's the lydian the next one is the mixo lydian right so we're going to hide that So now we're on the mixo lydian But if you don't know the mode you can just say well now I'm just going to be playing around The g making it in essence the one so the g is going to be right there And then we have another g right there and notice I'm only playing this piece of it you can go up and up and down Making sure you get the whole shape in there just starting and stopping on that g So if I was on this g for example, I could go back right to To that g And then play up like my my Forward right there And then I can go up from here So if I start on that and if I think of it as the fifth and I'm playing around the fifth It's going to go one two three four five six seven eight I started on there's the mode That was if it was a one if I started as at the fifth it'd be five six seven eight or one two three four five There's the octave if I started as the fifth if I started as the first we can say this is going to be one two three four five six seven eight or one And there's the octave we know that this is a major Mode because it's constructed or the one note is a major scale so I can say okay, there's my a major And I can build it I could start that out and build the starting and stopping by building a chord on it And then finally we have the locary in which I won't spend a lot of time on because this is the one I noticed that playing around the four is a little bit difficult But playing around the seven making it the tonic is very difficult, right? That's not normally what people musically do But technically you could start at the B and play around it. So I'm going to hide this And so We can say locion Hide probably not something that you're going to just play around as though it's the one Then but it's off it's often useful to see You know the chord shape there because the chord shape that creates that tension In the diminished chord is important because it it it resolves back to the one But you're probably not going to be practicing your scales so much Making the B the central the the central point So I won't even go through it right now But we'll and future points, but you could you could practice that But in the future what we're going to do is talk more in detail about focus in on each of these notes And as you could see if you do that then you basically can play You know six different scales In that one position which you can then move that entire position anywhere else as long as you orientate Around the C because you usually orientate around the major and you can play any of the major and related modes In basically any position by shifting this entire shape In that way which we'll talk more about when we get to We'll talk about learning this whole thing in different scales Like the G which is another common one to do but obviously You you can start moving that around if you if you want but The important thing to me is that and what I didn't really know at the beginning is that when you learn these shapes Then it's you get so much more out of it If you're focusing in on the starting and stopping point of not just the top and the bottom of the shape Not the D go into the F But the D go into the D and just keep on playing around the shape Until you get back to whatever whatever scale that you're thinking of your mind in And that and that's easy to do once you have once you have that down on the theory side Then in the evenings you or you know while you're watching tv you could play through the scale And get so much more out of it But just realizing that you're playing around a particular note All right, so anyways, we'll get into this shape and more detail focusing in on each of these chords and each of these Notes and how we can link it to the prior shapes in future presentations


Winston Edmondson here with Studio B here at IBM EDGE 2013 and I'm with Barry White Seriously, it's Barry White. Barry, how are you doing? That's so bad. Good. Thanks So you're here to give us an update on a couple major things to SVC and store-wise. Yeah What's going on in those worlds? So, I mean as you know SVC and store-wise has been around for the last 10 years or so SVC has been around More recently obviously adding in the store-wise family based on the same the same hardware And today we've just been announcing the latest version 7.1 Software which adds for some of the entry-edition very 3700 products adds in things like sess Direct storage attached allowing hosts to be connected directly into the server without the need for a fiber channel fabric There's also a special turbo model Of the 3700 which in some cases more than doubles the performance of the box by adding a software license Interesting walk us through some scenarios. What you know? What are the customers that are really going to be able to take advantage of this? Yeah, so I mean the the whole point of the the SVC and store-wise family is storage virtualization So this is really making better use of what you've already got So most customers already have one or more story systems in their environment and having the the store-wise family there With the virtualization capability means they can connect in their existing storage behind the product The store-wise product and actually still carry on making use of of that storage in itself Getting all the advanced features and functions that are built in to the store-wise family and applying them to an older storage controller Interesting. What now do you see this as a progression where they are moving towards? Something else entirely and this is this is kind of a good hybrid or in between state So it's definitely a progression I mean that there's a lot of things have been going on about software-defined storage recently And I mean SVC I mean I'm Bush was saying this morning in the main session that SVC was software-defined storage version one Ten years ago more than ten years ago when we first developed it. We realized software was the future So it's definitely heading in that direction. Obviously you still need the disks and you still need the hardware there but looking at extracting out and making it more of a platform that people can use to Implement their storage infrastructures great tell us about where do you see things going just kind of described to me some projections that That you might that you you want to project my project projection. Obviously flash systems flashes is a key technology that this really changing the game and it's making us have to think about the architecture of these systems and the architecture of the whole infrastructure itself Traditionally disk rise have always been the limiting factor So you could have more and more compute power you could have faster and faster compute But you still had the problem that the disks were going to take 10 15 milliseconds to respond So with flash systems getting down into the microsecond range We can make huge advances in using less compute power to do the same work Obviously less footprint is the overall savings again as we were discussing this morning in some of the sessions So I think flash is definitely it's here. It's maybe not going to stay in the in the sense of NAND There might be something better that comes along, but is a solid-state technology So it's making getting all of our software not just the storage systems themselves But also the actual application levels getting them to the point that their program to get used to that Microsecond technology, that's the real game changer very exciting now. I'm told that IBM Edge 2013 is I think twice the attendance and just kind of the the energy from last year Give me your impressions of this year's IBM Edge. It's amazing. I mean, I haven't stopped We're only a lunch time on day one I literally have not stopped and the rest of the week is going to be the same So it's great to see so many people here so many customers and business partners And I hope they all get as much out of it as we've been getting fantastic. Just last question Very why can you sing? No Very appreciate it right Winston Edmonton here studio be signing out


That's why I take your time and enjoy the ride Like Richard the Roo and I'm driving in the Outback Out to dust, it can cause you to the bumps and the bends is a must Us, Richard the Roo and Ernie the Roo Stay on track, stay on track Driving in the Outback, driving in the Outback Stay on track


Okay, I'm Gennady Bratslavsky. I'm a chair of the Department of Urology here at SUNY Syracuse, a state university of New York. I'm here with Dr. Mati Malapur, who is the lead and the director of the kidney cancer translational program here at SUNY Upstate. It was Dr. Malapur's original idea because of much of his expertise in the basic science and translational research in hereditary kidney disorder known as BHD, Burkhag De Bay. It is something that is very poorly known among community and many patients and many patients are not diagnosed until later when they actually experience some of the symptoms and often end up having self-diagnosis. So, Dr. Malapur's idea was to combine this as both clinical as well as a translational research. My name is Mati Malapur. I'm an assistant professor at the Department of Urology here at Upstate Medical University. I'm also the director of the kidney cancer biology section here at Upstate. The topic of this session title of our paper is the Sixth BHD Symposium and First International Upstate Kidney Cancer Symposium, Latest Scientific and Clinical Discoveries. It really summarizes the outcome of the meeting that we organized and we posted last year here at Upstate. What's so interesting about this meeting and we have summarized it in our paper is that we brought in clinicians, basic researchers, and also patients that are suffering from this particular type of kidney cancer called BHD, as well as other types of kidney cancer under one roof and we had a positive interaction in terms of what's the latest discoveries, what are the latest treatments for these patients, and also for the patients that had an opportunity to discuss the problems and what is actually available for them in terms of latest therapeutic strategies. We were very excited to host this meeting here. Last one was previously held at Paris and we had the bar set quite high. The beauty of this meeting was the fact that while we already have many patients coming from most of the United States as well as from the overseas for some of their kidney cancer treatment and many other urologic malignancy treatments, we are now part of the more comprehensive structure which is known as BHL Comprehensive Clinical Center and we treat so many different hereditary kidney type of cancers, those that are found in families and this was truly an opportunity for us to share our expertise. Both Dr. Malapur and myself, we came from the National Cancer Institute, National Institutes of Health where we both spent a few years each and we had the pleasure of working back there together and really learned quite a bit about this very rare type of kidney hereditary cancers and we are now very happy to be able to provide patients as well as clinicians with guidance on how to manage these patients as well as help other basic science researchers with their focus as well as contributing to the literature by doing symposium like that. This is a benefit for all type of a kidney.


the Rams. Oh man. They're dead.  I've always liked this Rams team though, strictly because they have all the traits of something that I love. I love when people are talented and I love when people know they're talented and when they go all the in the Rams had done that they had to players. What do we need? We need a better quarterback even though Jared Goff is going to lead the Lions to three straight wins in 2022. We need a Super Bowl winning quarterback. They bring in Detroit Lions Matthew Stafford out of a Cabo vacation with McVay right into the Rams. They invest. They bring in Odell Beckham Jr. Give us Vaughn Miller. They know that they have the team to do it and they can go and do it. Everybody comes back. We're going to run this again. We're going to do this again. I was pumped for him, but instead they've just laid an egg. They are not good. But even throughout the season, they didn't look like a team that cared. They didn't look a team that had any ability. They look like a team that got a Super Bowl ring, got money, legacies were made, and now it's just let's ride this out for another year and maybe take a paycheck.