The form may not be a robot. Circus Zaragoza, a traveling European all-animal circus, is home to more than meets the eye and is sitting on unspeakable terror. The energies of the living have opened portals to dreadful realms where the dead reside, and the living doesn't even know they're there. Three performers died horribly, and their ghost possesses the animals of the circus to stay in the realm of the living, or they'll go to these portals and remain there for all eternity. Their haunts grew in number, moaning and groaning for the sweet relief of Heaven's light. But the problem was that either they missed their families or their loved ones, so they wanted to stay and be with them, so they decided to take the bodies of the animals of choice, and be alive and well. VITALY, October 10, 1863, November 18, 1912 VITALY was the first to hit the dust in 1912. He began developing extraordinary strength at an early age in 1853. While VITALY's father was of average proportions, his mother was almost Amazonian, recorded as weight in 265 pound at 61 inch. She in turn had a father of 6 feet 4 inches and 260 pounds. From the age of 12 VITALY worked in a lumber camp during the winters and on the family's farm the rest of the year. Discovering his exceptional strength at a very young age, he impressed his fellow workers with his feats of strength. After learning of the tale, VITALY attempted to mimic the practice of legendary strongman Milo of Croton, who as a child carried a calf on his shoulders, continuing to carry it as it grew into a full-grown bull and he into a grown man.  According to one of his biographers, his mother decided he should let his hair grow, like Sampson in the Bible. VITALY started his strongman career at the age of 16, after some publicity came about due to an incident when the young VITALY was reported to have lifted a farmer's heavily laden wagon out of the mire in which it had become stuck. He was matched in a contest against BAPO of Samoa, who was recognized as Samoa's strongest man of the time. VITALY beat him in tests of lifting of heavy stones by hoisting a granite boulder weighing 480 pound, 220 kilograms. VITALY's exploits had been well-publicized in the pinkoon, the paper was actually pink, although the contents were often blue, or police gazette published by his now ex-wife, the famed proprietor and promoter of other strength athletes, Jasmine Parmesan. She offered a side bet of $5,000 to anyone who could beat VITALY at any of his strength feats. Promoted by her, VITALY went on tour circa 1885 to 1891 beating amongst others, Sebastian of France, Bullard of Boston, Thomas the Cyclops, Austin of Jamestown, Francisco Pinchinello of Rome, and Richard Tucker from Kentucky. Plus continually challenging, without success, Paul the Giant Russell of Texas, with a genuinely diamond-studded belt to be awarded to the winner, should such an event ever take place. It did. Paul was an astute champion, but no fool, and took on any challenges throughout his esteemed career, even after early mistakes, like the time he was beaten by Jack McCann. He was then beaten by VITALY during that challenge. There was no doubt that VITALY was an unusual man regarding size and measurements, the latter often causing debate. Although Dr. Bill Collins, famous Washington University physical director recorded measuring VITALY in 1895, when he was 32 years old and weighed 291 pound, 142 kilograms, Collins listed VITALY's height as 58.5 inches. Other measurements, most on the conservative side as compared to other biographers, were neck, 20 inches, 51 centimeters, biceps, 20 inches, 51 centimeters, forearms, 16.3 inches, 41 centimeters, wrists, 8.2 inches, 21 centimeters, chest, normal, 55.2 inches, 140 centimeters, chest expanded, 60 inches, 150 centimeters, waist, 47.4 inches, 120 centimeters, hips, 48.1 inches, 122 centimeters, thighs, 28.5 inches, 72 centimeters, knees, 17 inches, and calves, 19.3 inches, 49 centimeters, far short of the quoted 28 inches, but perhaps a possible 23 inches later when of higher body weight, ankle 10.3 inches, 26 centimeters, and shoulder width width calipers, across the deltoids 25.6 inches, 65 centimeters. The above details were just one set of figures relating to VITALY's size, others being recorded by Wilkirk when for example VITALY was 47 years old, in 1910, gave him calf 23 inches, neck 22.3 over 4 inches, biceps 21.5 inches, chest normal 59.5 inches, and thighs 33 inches with other parts to match the increase in weight, being at the time a heavier 365 pounds. Ben Williams, who was privileged to access family archives, was even more generous giving arms size 24 inches, 61 centimeters, for arms 19 inches, 48 centimeters, and calves, the disputed 28 inches, 71 centimeters, following a similar line to James Dr. Buff Curl, a strong man who lifted an 18 wheeler with only one finger. While several of VITALY's feats of strength may have been exaggerated over the years, some were documented and remain impressive. He's included lifting a platform on his back, holding 18 men for a total of 1,967 kilograms, lifting a 534 pound, 242 kilograms, weight with one finger, pushing a freight car up an incline. At 19 years old, he lifted a rock from ground up to his shoulder, officially weighted at 514 pounds. He beat Paul's bent press record, and therefore the heaviest weight lifted with one hand, by 2 pounds, 0.91 kilograms, to a total of 273 pounds, 124 kilograms. Perhaps his greatest feat occurred in 1895, when he was reported to have lifted 4,347 pounds, 1,967 kilograms on his back in Kentucky by putting 18 men on a platform and lifting them. One of his most memorable displays of strength occurred in his hometown of Italy on October 1891. Italy resisted the pull of four draft horses, two in each hand, as grooms stood cracking their wits to get the horses to pull harder. A feat he again demonstrated in London with Queen Victoria's team of draft horses during her royal visit. While in Iowa, he volunteered with the police when they took deputies to round up a local gang of miscreants, they turned him away claiming he would be too slow due to his bulk. He challenged the regular officers to a foot race, beating the majority, and they took him on. He patrolled as a police officer between 1883 and 1885 in St. Punigand, known now as Big Ben in New York. Both Italy and the Place d'Humsfortes, Strangman Square, are named after him. Statues of him are located at Place d'Humsfortes and the Musee de la Civilisation in New York City. The high school in his hometown of Russia is also named after him. Italy learned boxing and wrestling for a match. While in Madison Square Garden, March 1901, Italy wrestled El Gigant, the juggernaut in Spanish, who was known as a Hispanic giant. Italy's height was measured at 5 feet 8.5 inches, 1.740 meters, and he weighed 365 pounds, 166 kilograms. El Gigant's height was measured at 7 feet 8.1 inches, 2.339 meters, and he weighed 365 pounds, 166 kilograms. Italy won by knocking El Gigant out with 10 steel chairs, and was aided by Umbregato, Cadman in Spanish, to distract the referee while bashing El Gigant's head in with metal. Italy grew up to be the star performer in Circus Zaragoza, because of his new feat he gained, jumping through loops with such grace and speed, it was as if he was flying, constantly pushing how far he could go by using increasingly smaller rings to jump through. On one performance in 1912, Italy went too far, he set up a ring so small it could be used as a pinky ring and even had it set on fire. He lubricated himself with olive oil, apparently unaware that the substance was highly flammable. The resulting performance was a disaster, Italy was burned alive, and he died by the flames engulfing his body. A great homage was paid by all of Russia, with immense crowds attending the funeral and floral tributes coming from all over the world. Now possessing a Bengal tiger, his ghost still tries to perform the same exact stunt, but it winds up replaying the same incident he died from. Stefano, May 7, 1915, November 8, 1993. Stefano was born in Italy as the son of the circus master, Anton Borrella. He started performing in his family's circus at the age of three, forming with his brothers Michel and Ralph, the Morellatrio. He was the Interval Act at the 1962 Eurovision Song Contest in Rome. To this day circuses are dos et tours France and surrounding countries. These performances include live tiger acts, which means the circus cannot tour Britain under the Animal Welfare Act. The circus is rated as a top show in France. He became famous for his skills as a pantomime. He committed suicide in 1993. Stefano was buried in the cemetery in his hometown. In the body of a sea lion, he still tries to make the people laugh, even when his soul is sad from depression. Gia, December 5, 1905, October 10, 1972. Gia was born in Italy in 1905 to an old circus family and began performing at the age of six. While still in her teens she answered an ad for a hand balancer with courage. Her employer, Anton Borrella, the brother of the deceased Stefano from before, talked her the trade through some stuntmen of his own. In 1922, Gia put together her own act with her brother Santino, Caesar, and an American teenage boy, Itty White, who eventually became her boyfriend. The act toured Europe for several years, performing some amazing stunts. In 1928, they debuted at the Madison Square Garden. The act performed without a net, it had been lost in transit, and the crowd gave them a standing ovation. In 1944, while they were performing in Hartford, Connecticut, a circus fire broke out, killing over 168 people. None of the performers were hurt. In the following years, Gia developed some of their most impressive acts, such as the seven-person chair pyramid. They continued performing those acts until January 30, 1962, while performing at Detroit's State Fair Coliseum, the front man on the wire, Quiddala Shemp, faltered and the pyramid collapsed. Two men and Gia fell to the ground, killing Santino, Santino's son-in-law, and nephew Quiddala Shemp. Gia injured her arm, and her adopted son, Luigi, was paralyzed from the waist down. Quiddala's little brother, Mario Shemp, let go of the wire to fall into the quickly raised safety net, but bounced off and suffered a head injury. But the incidents have gotten worse, as Gia was killed in 1972, after touching a live electric wire while performing a live stunt she did when she was at home. Nonetheless, her crew decided to go on. They repeated the pyramid act in 1963 and 1977. They continued performing with a smaller group, and doing solo acts. Gia's spirit was left abandoned in her own private limbo, but then she met the other two ghosts who suffered from different tragedies. Gia, Stefano and Vitaly paired up and helped each other survive in their loneliness.  The circus has changed to an all-enables circus instead, so no other tragedies will occur anymore. But more and more paranormal events occurred by nightfall, when the performers heard a woman's voice from the far end of the tent, announcing the next act. They noticed one of the jaguars was talking in the deceased Gia's voice. They remembered the voice and fled the tent in terror. The three dead performers' secret revealed, and then decided that the show must go on, seeing that wherever they went on tour, more and more paranormal acts occur around 12.17 am, on any given night. No one knows when or where the tents will rise, but all who see them are drawn to find out what lies inside Circus Zaradosa. This place is not of this time, for it has been there for centuries, but beware, what you see is precisely what these performers become.


Hello, I'm Stacy. I'm a GIS analyst with the Natural Capital Project, and I'm glad that you've joined me to learn some techniques for working with the geospatial data that's used by the Invest Ecosystem Service Modeling Toolkit. Now a reminder that this series is not an introduction to GIS in general, nor is it an introduction to GIS software, but it does cover specific topics that are useful for working with Invest models. This episode provides an overview of coordinate systems. To get the most out of this tutorial, I highly recommend following along in your own GIS session. In this video, we will demonstrate techniques in ArcGIS, and we will be working with some sample data. The webpage for this video provides a link to the sample data that we'll be using, so if you haven't already, now is a good time to pause this video, download the sample data, unzip it, and bring up an ArcGIS session before continuing. A coordinate system defines how the locations of a two-dimensional digital map are related to actual locations on the Earth. There are two types of coordinate systems, geographic and projected. Geographic coordinate systems define distances with angular units that are in degrees. And projected coordinate systems define distances with linear units, usually in meters. Most Invest models require that all of your inputs be in exactly the same projected coordinate system, where the linear units are in meters. One exception is coastal vulnerability, which requires that your area of interest have a projected coordinate system. But the other inputs may have a geographic coordinate system. But as always, it's very important to read the user guide to learn about the data requirements for each model. Now in this video, we will cover, first of all, how to identify your data's coordinate system. We will cover how to re-project your layers to a common projected coordinate system. We'll talk about how to verify that all of your layers do have exactly the same projected coordinate system. And we will also learn how to troubleshoot some common invest errors that are related to coordinate systems. In order to prepare your data for use in an Invest model, it's important to know, first of all, which projected coordinate system you need to use for your study area. Now this is mostly your decision, since Invest supports a wide variety of coordinate systems via the GDAL Python library. However, from time to time, we will try to use a coordinate system that is not well supported by GDAL. And in that case, we'll need to use a different one if we want to run these models. Now we won't cover the pros and the cons of different types of coordinate systems in this tutorial. You can find lots of that information on your own with a web search. But a good default is to find out which UTM zone is correct for your study area and use that UTM coordinate system for all of your input layers. There are times when you are required to or you prefer to use some other specific projection that is not UTM. And that's totally fine as long as it's supported by GDAL. For this tutorial, we will use UTM since it is widely applicable. The second thing you'll need to know for your project is which coordinate system your raw data later start out with. Now it is very likely that most or probably all of the spatial data that you collect from out in the world will be in a coordinate system that is not the same as the one that you are using for your analysis. As an example, let's start looking at our sample data in a GIS. Okay. If you are using the ArcGIS session that you saved from the previous tutorial, you'll already have the land cover data that we'll be using. So just hang out for a minute. If you're joining us for the first time, open an operating system window to the folder where you unzip the sample data. The data folder is called coordinate system data ArcGIS. And let's look at the file called LULCESAnopal.tif. We can see that it's a tif file by the .tif file ending, and we can also see it listed as type of tif file. This is land use and land cover data from the European Space Agency and it's a very commonly used global data set. Land use and land cover data is required by many different invest models, so it's important to get used to working with it. The original data set is over two gigabytes in size and it's in net CDF format. So to make it easier to use for this tutorial, I have clipped out a smaller subset around our study area in Nepal and saved it as tif format. Other raster formats are also supported by invest, but I highly recommend using tif because it is a very standard format that's easy to work with. The easiest way to bring this layer into ArcGIS is to drag and drop the tif file. In my version of ArcGIS, by default, the layer will be shown in shades of gray based on the numeric land use code that we can see in the legend. The color scheme in your GIS session may be different than mine and that's okay. In the first tutorial, we covered symbolizing this land cover raster, so we won't cover that again here. To see which coordinate system this layer currently has, right click on the land cover layer and select properties, then click on the source tab. If we scroll down to the section called spatial reference, we see that the XY coordinate system is GCS WGS 1984. There are no linear units and the angular units are in degrees. Now WGS 1984 is a very common geographic coordinate system. We can tell that it's a geographic coordinate system because there are no linear units defined, only angular units of degrees. If we scroll back up and look at the cell size, we see that it has a very small value of .0027 and this is a measure of degrees. When we see a cell size like that, it is a good indication that you are working with a geographic coordinate system, not a projected coordinate system. With a projected coordinate system, we do have linear units, typically in meters. And if the cell size was .0027 meters, that would be extremely high resolution, which we probably don't have. So just from looking at the cell size, we can tell that we're working with degrees. Alright, let's click the cancel button to close this window. In ArcGIS, the tool that is used to change the coordinate system of a raster is called project raster. Let's find it under data management tools, projections and transformations, and raster. On the tool, let's note that further down, there is a tool called batch project, and there is a tool called project. Both of those tools are used for vector data, not for raster data. So since we're working with rasters, we need to use project raster. The other tool that we should note is called define projection. And it's very important to remember that define projection is not the same as reprojecting. And the define projection tool should not be used for this purpose. Define projection does not translate one coordinate system into another. Instead, all it does is overwrite the layers metadata with new coordinate system information. And this can cause a lot of problems when trying to use it in both the GIS and invest. So we will not use define projection, but we will double click on the project raster tool. The first input to the tool is the raster itself. So let's drag in the LULC raster. And the tool will automatically show the input coordinate system as WGS 1984. For the output raster data set, let's navigate to our sample data folder. And let's call this layer LULC underscore ESA underscore Nepal underscore UTM.tif. We need to choose the output coordinate system. Click on the icon to the right of the box. And it will bring up the list of coordinate systems. You'll see that there is a folder for geographic coordinate systems and a folder for projected coordinate systems. We want to re-project this raster into a projected coordinate system. So click on the plus sign next to that folder. The first thing that we notice is that there are a lot of possible coordinate systems to choose from. Now we want to use UTM. And our sample data is a watershed in Nepal, which is in the northern hemisphere. So we're going to use UTM zone 45 north. For your study area, you can find out which UTM zone it is in by finding one of many maps on the internet. So let's scroll down to we get to UTM and expand that. Then let's go down to WGS 1984 and expand that. Then northern hemisphere. And then if we scroll down and down and down, we will get to WGS 1984 UTM zone 45 north. Just click on that and hit OK. The next thing in the tool is the geographic transformation. In this case, we do not need to apply a transformation. And since this is usually the case, I'm not going to talk about it anymore, but you can learn about it in the ArcGIS help system. The next option is the re-sampling technique. By default, it's set to nearest, which performs a nearest neighbor analysis to assign values to the re-projected raster. For categorical data like the land cover map, nearest is the technique that should be used. Now if you are re-sampling continuous data, like precipitation or an elevation model, you may want to consider other re-sampling techniques. In particular, when re-sampling a digital elevation model or a DEM, we should always use the bilinear or the cubic options. Otherwise, we will end up with some strange hydrology patterns when we look at flow accumulation and flow direction. And so it's really important to consider which re-sampling technique you choose. For the land cover raster, we'll choose nearest, and that way we know that we won't be making up any intermediate values like you would get with bilinear or cubic interpolation. Right, we'll only be using the original land cover codes that are included in the original map. Next, we'll choose the output cell size. The tool automatically populates these values, and you can use the defaults, but personally I prefer to choose round numbers for cell size. By default, the tool chooses 297.6 meters. But that's hard for me to visualize, especially when I'm trying to compare cell size of this layer with other layers that are different. Using the value of 300 meters is more intuitive for me to work with. And more importantly, it is the data resolution that is provided by the European Space Agency on their website. They specifically say that the resolution of this data is about 300 meters. Now you can choose other cell sizes if you want. In particular, it's sometimes useful to choose a smaller cell size that is the same as some other data layer. What I don't generally recommend is choosing a larger cell size than what the original data comes in, since that would cause you to lose information. In this case, let's type in 300, 4X, and 300 for Y. And we will have a 300 by 300 meter pixel. Now in this case, we do not need to use the registration point option. So let's just click OK. And that should run pretty quickly. If we click on and off this layer that we just created. It will appear that this new raster that's projected in UTM is the same place and overlaps with the original data set that is in WGS 1984. Yet they have different coordinate systems. So this is a good time to point out that ArcGIS does what is called on the fly reprojection. And this means that it will try to make all of your layers visually overlap by reprojecting them to a common coordinate system. And this happens behind the scenes. And this is done just for visualization and the rasters themselves retain their individual coordinate systems. Usually this is very helpful, but it can also hide the fact that your layers do have different coordinate systems in reality. So it's easy to think that just because several layers appear to line in ArcGIS, they actually align based on their coordinate systems. But if they do not have the same coordinate system, they may not actually align in space and invest will give you an error. So before to be sure to check the coordinate system of all of your layers and don't assume that just because they look like they overlap in the GIS, they all have the same coordinate system. All right, let's verify the coordinate system of the layer that we just projected. So right click on the new layer and select properties, then source. Now we see that the cell size is 300 by 300 meters. And if we scroll down, the XY coordinate system is now set to UTM zone 45 north. And it now has linear units of meters. So this is all correct. And we can click OK to close this window. Now as we've seen, there are a lot of coordinate systems available. And some of them look very similar. So getting them exactly the same for all of your spatial inputs can be challenging. To make this easier, we can use a layer that we have already projected into the correct coordinate system. And we can use this to define the coordinate system for our other layers. So let's try this out. First, we'll add a new spatial layer to our map. Let's go over to our sample data folder. And you'll find a layer called erosivity, Nepal dot tip. Let's drag and drop this into the GIS. This is a climate layer of rainfall erosivity, which is used in the sediment model. And we won't talk about it more at this point. Right click on the erosivity layer and select properties. And once again, we can see that it has a very small cell size. And if we go down to the XY coordinate system, it is also set to WGS 1984, a geographic coordinate system. So we're going to need to re-project this to UTM to match our land cover layer. Let's click cancel to close this window. Now, again, we're going to open the project raster tool. So double click on that. For the input raster, let's drag the erosivity layer into the input raster box. And again, the coordinate system will automatically populate with WGS 1984. For output raster data set, let's navigate again to our sample data set, sample data folder. And let's call the output erosivity underscore Nepal underscore UTM.TIF erosivityNapalUTM.TIF. Of course, you can name it something different if you want. For output coordinate system, again, let's click on the box to the right to bring up the coordinate systems. And this time we're going to open the folder called layers. This folder provides a list of the coordinate systems used by the different layers that are added to your GIS session. So once you have one layer in your project's coordinate system, it will be listed here, making it easy to find and making it easy to use exactly the same projected coordinate system for all of your layers. In this case, we see two coordinate systems listed, WGS 84, which is the geographic coordinate system that the raw data comes in, and UTM zone 45 North, which is the projected coordinate system that we are using for our study area. Now, if we click on the plus sign next to UTM 45 North, we can see a list of the layers that currently have this coordinate system. And this lets us verify that it's the proper one that we want to use. So we can click on WGS 1984 UTM zone 45 North and click on OK. Once again, we do not need to enter a geographic transformation. And for re-sampling technique, we can also use the default of nearest in this case, which is fine for climate data. For output cell size, this time we see that the default value is 892 meters. As discussed earlier, I prefer to use round numbers for cell size. And in this case, the Eurosivity data is based on climate data that has a resolution of one kilometer. So let's type in 1000 meters for the X and 1000 meters for the Y. So our output layer will also have a resolution of one kilometer. And let's click OK to run the tool. Once again, we can verify that the coordinate system is correct by right clicking on the new Eurosivity layer, going to properties and clicking on the source tab. The first thing that we can verify is that the cell size is 1000 by 1000 meters. And then if we scroll down, we see that the XY coordinate system is UTM zone 45 North. And if we type that all looks good, so we can click cancel to close this window. When you're creating data to go into invest, you will go through this process for each spatial layer, both rasters and vectors, making sure that they all have the same projected coordinate system. If they do not all have the same projected coordinate system, invest will give an error. Invest does try to catch data errors when you enter inputs into the user interface. And if you enter a layer that is in a geographic coordinate system, when it needs to be projected, you will see something similar to what you see on the screen now, which is a red X next to your input, as well as a red X in your run button. Now if you click on the X, there will be a message that says data set must be projected in linear units. This means that you need to re project this layer to have the same projected coordinate system as your other spatial inputs. Similarly, if you enter layers that need to have the same coordinate system but don't, you'll see red X is next to multiple inputs. And if you click on the X, you'll see the error, bounding boxes do not intersect. This means that invest compared the spatial extent of all of the input layers and found that they do not overlap. And this is most often caused by being in different coordinate systems. The error includes a listing of each input and their spatial extents. So if you look closely at the numbers in this list, you'll be able to find the layer or layers that are incorrect. When this error happens, go back to the GIS, look closely at the coordinate system of each layer, and find the ones that are not in the projection that you want to use for your project, and re project them to match the others. Okay, that's enough for this session. You might want to save your Arc GIS session so you can keep using it for later episodes. And if you have any questions or comments about this episode, we'd love to hear from you on our community forum. There's a link to the forum in this video's webpage, where you can search for previous posts and create a new post under the category of training. I and other techies at that cap will see your post and will respond as soon as we can. Thanks for following along.


Microsoft released an update to the SharePoint framework, SPFX, with version 1.17. This release includes approximately 20 changes such as features that are now generally available, API and SDK improvements, dependency updates, and improvements to the developer experience. However, just over half of these changes are listed in the official release notes from Microsoft. But in my research, I found an additional 40% of changes throughout this release. In this video, I'm gonna cover all of these changes so you can get complete details on the SharePoint Framework 1.17 release. And to help you navigate the content, I've included chapters that you can use to jump to specific topics, which are linked below in the video. As a bonus, I'm giving away a license to my new course, Building SharePoint Framework Web Parts and Property Pains to one lucky viewer just like you. I'll explain how to enter later in the video, so be sure to watch till the very end. Hey, I'm Andrew, and if you're new here, be sure to hit that subscribe button and notification bell to see when I publish new videos for web and cloud developers on things like this SharePoint Framework. And also, if you want insights and news in the Microsoft 365 and Azure developer space delivered straight to your inbox, join the 10,000 plus fellow web and cloud developers who've subscribed to my newsletter. You can find the link in the description below the video. All right, let's get started. I'm gonna break this video down into a couple main sections. First, we'll examine some changes related to the different SharePoint Framework components that you can create. Next, we'll take a look at the changes to the SharePoint Framework APIs and SDKs. And then finally, I'm gonna go over a handful of changes to the developer experience and changes to all projects, such as the generator and their dependencies. So let's get started with the changes to the components. Specifically, let's start with web parts. The SharePoint Framework 1.17 release includes two features that are specific to web parts. The Property Pane link control that's available to developers in the Property Pane was missing an accessibility property, the ARIA label property. This property allows developers to describe an interactive element which is useful to screen readers in an accessible scenario. It seems that this was an oversight dating back to the early days of the SharePoint Framework as a lot of other controls already have this property. However, it appears that this property is also missing from the Property Pane checkbox control as well. Shouldn't that get the same property? I think so and if you agree, I've added an issue for that control in the SharePoint Framework issue list. So check the link in the description or jump to the issue and give it a thumbs up reaction to increase visibility with Microsoft so we can get that fixed in the next release. Now Microsoft introduced a new way to interact with web parts in the SharePoint Framework 1.16 release with top actions. Although previously a developer preview, these controls are now generally available in this SharePoint Framework release. Now the purpose of these controls is to provide an alternative to editing web parts from the Property Pane. Now in my opinion, I've said this before, top actions are probably the first step towards eventually completely replacing the Property Pane. Now when you add a web part to a page and you put it into edit mode, you're gonna see either a button or a dropdown control that you can click. And by handling the click event and the code, you can execute any desired action that you want. Now unfortunately, creating top actions is a little tough because they don't seem to work in the SharePoint hosted workbench. The only way I was able to see them work is when I packaged and deployed the project to my SharePoint site and added to a real SharePoint page, kind of the same way we have to do with extensions. Now when Microsoft released this feature in the SharePoint Framework 1.17 release, they included some of the docs that are, well, they're pretty sloppy. They include code samples that simply won't compile because they reference things in the API that don't exist. And furthermore, some of the aspects with how top actions work, that kind of conflicts with the API documentation. Now I've submitted some issues to the SPFX issue list to get some clarification on these things. I've got all these issues linked to in the pinned comment below the video. And if Microsoft updates these things, I'll be sure to update that comment as well. So keep an eye on that. If you're interested in learning more about top actions, let me know, drop a comment below. I'm already planning to add a lesson about it to my web parts chapter that's in my Mastering the SharePoint Frameworks course and in my Building Web Parts course. But I might even create a video for it and drop it here on my channel if you're interested. But I kind of gotta get some feedback on how interested you are in those. So again, drop a comment below if you wanna see a video on top actions. Now next up, let's talk about adaptive card extensions. We got a few updates here, including one minor thing that I found in my research that was not included in the release notes. Now Microsoft has upgraded the version of the adaptive card schema that's supported by ACES to version 1.5. And this is a significant update as ACES have only supported the 1.3 adaptive card schema up to now. It's also overdue as the 1.5 adaptive card schema was released in October of 2021, which is about a year and a half ago. So what's new in this update that wasn't available before? Well, the 1.4 schema added support for a refresh and authentication property that defines how a card can be refreshed by making a request to a target abort and sending it to enable an on behalf of sign on or just in time authentication for OAuth. Now the 1.5 schema includes several improvements to adaptive cards, such as the support for right to left rendering of the container and column types, the ability to mask the test text input control for scenarios like passwords, support for overflow for an action set when you wanna show more actions than the rendering is gonna support, support for a tool tip on actions to give the user a hint on what the action does, update the input choice set to support a static list of choices, updating actions to support disabling a button and the ability to render tables of data which might be the biggest improvement yet, if you ask me. Refer to the adaptive cards.io website for detailed information on all of these features. Now all card implementations contain an on action handler that you can use to handle actions submitted on adaptive cards used in the two different views available on ACEs. Now in this release is gonna add a new before action handler that's raised before the action is actually executed. You can't change the flow of the action but you can do some things like add extra logging or telemetry to your solution. That's gonna go on that hub class that you have for your adaptive card extension. Now this release also includes an accessibility improvement for the ACE quick view. A new property called focus parameters has been added to the quick view class and that's gonna enable us to set the focus on a specific control in the adaptive card. Now by default, the first control in the card has focus but I can now change that using this property. To do this, I'm gonna override the focus parameters accessor method and I'm gonna return an object of type I focus parameters. And this interface contains two properties. The first is a required property called focus target that returns the ID of the element in the adaptive card that should have focus. And an optional property called aria live that is three options that you can set for screen readers. This can be set to polite, which is used by the screen reader when the user is idle, assertive, which is gonna disrupt any announcement in favor of this property or off, which tells the screen reader not to read the contents. Now at the time of the release, this feature is not supported in Viva Connections mobile app experiences. It's only supported in the desktop and the web browser experiences for Viva Connections. Now another noteworthy change that was not included in the release nose is the default ACE project icon. The SharePoint logo was previously used as the initial icon for the control in the Yeoman generator. But in the SharePoint Framework 1.17 release, the SharePoint logo SVG file that was removed from the default project and it was replaced with a reference to the hosted Viva Connections logo that Microsoft hosts in their online resources. Now that we've reviewed the changes for the different SharePoint Framework component types, let's take a minute and let's look at some of the API and SDK changes as part of this SharePoint Framework release. Now, this new capability was added in the SharePoint Framework 1.17 and frankly, it's not something that most people are gonna encounter. If you don't understand what I'm talking about, you likely aren't gonna need it. But there may be one scenario where you'll think, oh yeah, this unblocks that one problem that we've got. This is for you. Let's first understand the scenario that this feature addresses. When you request an access token from an OAuth provider like Azure AD for a resource, the owner of that resource may have configured it so that you must include specific claims when you request the token. For example, the endpoint may require the user that's requesting the token to perform two-factor authentication or not satisfy some conditional access policy. If you request an access token without that claim, the resource and Azure AD will respond with a claim challenge that indicates that the access token you sent has insufficient claims. So to get past this, you need to include a claim in the token request. But until the SharePoint Framework 1.17, the API, specifically the AAD token provider API, that didn't give us a way to do this. But now we have the method on that object, the AAD token provider has a method called getToken. That's only available in the SharePoint Framework 1.17 and it supports an option object as a second parameter. And we can use this to preempt the claim challenge with a claim parameter that's going to be expected. So in this example, I'm including a claim parameter that satisfies a conditional access policy requirement. You can learn more about claim challenges, requests, and the client capabilities from the Azure AD docs. I've included a link to this in the description of this video below. Now the other improvement to the AAD token provider object in the SharePoint Framework API is support for the pop-up flow. Again, just like last time, let's first understand the scenario that this feature is addressing. Let's say that you've created a SharePoint Framework web part and it needs an access token to call some API. Normally, things work just fine. You're already signed into Azure AD in order to access SharePoint Online so the SharePoint Framework can just leverage the authentication cookie and your request to validate your identity. However, in our newish security-minded world, browsers now support blocking third-party cookies that were commonly used to track user actions across sites by these different ad platforms. And unfortunately, this affects authentication scenarios that use that same technology. So when a token is requested and Azure AD doesn't know who you are, it has to prompt you to authenticate. Usually this can be handled with a redirection, prompting you to sign in again, but that doesn't always work. For example, if your SharePoint Framework web part is used to implement a Microsoft Teams tab and it's rendered within an iframe, the redirection won't work because Azure AD won't allow its sign-in page to be hosted within an iframe to protect against clickjacking. Or if you're using the web part in SharePoint Online and if a user is using Safari with the intelligent tracking protection, ITP, if that feature is enabled, it blocks third-party cookies. So when your web part requests an access token, the only thing that SharePoint Online can do is force a full page refresh, which isn't a great experience. Now, until the SharePoint Framework 1.17, the token provider API didn't support a pop-up experience, but now it does. To take advantage of this, you need to set the argument is enabled app-off-pop-up-enable. That property is available to us on our tenant. We have to set that to true and we're gonna do that using the SharePoint Online PowerShell using the set-spo-tenant PowerShell commandlet. Now, once I set that, I can then implement an event handler on the pop-up event that's on the AAD token provider. Now, I can then use that to initiate the pop-up experience because most pop-ups are gonna be automatically blocked by browsers unless it's initiated by a user gesture. Now let's discuss some of the SharePoint Framework API changes that are related to Microsoft Teams. The first update is an update to the Microsoft Teams JavaScript SDK. Before SharePoint Framework 1.17, we were using the Teams JavaScript SDK version 2.4.1, but with this release, we bumped that up to 2.9.1. Now, this is gonna add support for that live share API that a lot of people are interested in. Also, the Sync to Teams feature in SharePoint Online's tenant app catalog, that can take advantage of a SharePoint Framework solution that contains components that can be used in Microsoft Teams and automatically create and deploy the Microsoft Teams app package automatically for developers. Now, prior to the SharePoint Framework 1.17, the app manifest that Sync to Teams used was based on version 1.8. And what that meant is that if you wanted to use a feature in Microsoft Teams that was implemented with your SharePoint Framework components, like something like a meeting app, you had to manually create the Teams app manifest and package it up rather than rely on the Sync to Teams capability that we have in the tenant app catalog. But in coordination with the SharePoint Framework 1.17 release, the Sync to Teams feature now uses the latest Microsoft Teams app manifest, version 1.16. You don't have to do anything to take advantage of this. It's actually not even part of the SharePoint Framework release, but rather this change was to a feature in SharePoint Online that was just time to happen alongside the SharePoint Framework 1.17 release. Now, this next feature is quite an edge case. Now, when you're using the SharePoint Framework web part as a Teams tab, if your web part displays a SharePoint page, you need to configure the web part to force its rendering within an iframe instead of rendering it within a div element like it normally does. So to do this, there's now a property called support self framing in Teams on the web parts manifest. Now let's try something new and run a little contest. I'm going to give away a lifetime access to my new course on building SharePoint Framework web parts, building SharePoint Framework web parts and property pains. That contains 39 lessons and is over five hours long and you'll continue to get the updates that I add to it over time. So how do you enter? Let's test your SharePoint Framework knowledge. Can you name a feature that's still in beta or developer preview as of the 1.17 release? If you can, drop a comment below and make sure you put the word contest in your comment so I can easily find it. Now I've identified a handful of SharePoint Framework features that are still currently in beta or developer preview roughly a week after publishing this video on Monday, April the 17th. I'll look at all the correct answers and pick someone at random and I'll get back to you by replying to your comment. Bonus points go to those who list the name of the feature that's been in beta or the developer preview the longest. Okay, now let's get back to the SharePoint Framework release. Now the SharePoint Framework 1.17 release includes a few changes to the tooling and the developer experience. The first one's a nice productivity improvement. Previously, when you create a new SharePoint Framework project, you needed to manually update the serve.json file in the projects config folder to point to the domain where your SharePoint online hosted workbench was that you wanted to test your component against.  However, now that string that we use to have the one with enter your SharePoint site in the URL that's been updated to include a string tenant domain. Now, when you run the gulp serve task it's gonna look for an environment variable called spfx serve tenant domain that's been set on your workstation and use that to replace the tenant domain string.  That's awesome, so much nicer. Now I noticed a small change that was not included in the release notes. Previously, when you created a new project the generator would say, welcome to SharePoint online. Let's create a new SharePoint solution. But now, as part of the shift to from SharePoint to Microsoft 365, it now says, welcome to the Microsoft 365. Let's create a new Microsoft 365 solution. However, when your project is done creating the last confirmation message, it still shows the SharePoint logo in an ASCII art indicating that they kind of forgot to change that to the Microsoft 365 logo. Now lastly, let's cover the core project dependencies that were updated. There's nothing you need to do here. All of your new projects automatically receive all of these changes when you create a brand new project. You will have to do this if you upgrade a project though. Now note that none of these dependencies are listed in the release notes at the time of this video was published. The OfficeUI fabric package, that's part of FluentUI, that's been updated to version 7.204.0. That's the latest version as of the release of this SharePoint framework. This was just a small bump from the previous version of 7.202 that was found in the previous version of SharePoint Framework, 1.16.1. Also, the RushStack compiler that we is used by the build engine to decouple the SharePoint framework from the version of TypeScript that's used, that's been updated to 0.4.0 that's up from 0.2.2. And finally, the version of Webpack that's used to create these bundles, that's been updated to use 5.77.0. Now there's two changes to ESLint and they were not included in the release notes. One of them is explicitly setting the version of ESLint that's used by the SharePoint Framework projects in the Project Dev Dependencies section of its package.json file. Previously, the SharePoint Framework assumed or relied on the fact that underlying dependencies were including ESLint, but that meant that the SharePoint Framework was not controlling the version that was used and meant something else was controlling it. For example, in the previous version of the SharePoint Framework, like 1.16.1, your project was using ESLint 8.30, which came from some underlying dependency, but now it explicitly is set to 8.7. Now I wonder what caused them to do that? Someone must have run into something. Oh well, it really doesn't matter at this point. This is a better way of doing it anyway. You wanna set your dependencies that you rely on to specific versions. You don't wanna always assume what somebody else is doing. Now another change that I noticed was a rule that was changed in the default ESLint rc.js file that's added to your projects. Previously, the rule TypeScript ESLint slash no parameter properties, that was set, but apparently that rule was deprecated in favor of one that doesn't have the no in it. It's now called TypeScript ESLint slash parameter properties. That was deprecated by the TypeScript or the ESLint team recently. So the SharePoint Framework team, they just updated it to use the correct term. Whew, I think we're done now. It's everything that I found in the 1.17 release. At least for now, we hope we don't have any kind of breaking changes coming out soon. There's quite a few changes, don't you think? To recap, while Microsoft included about 11 of these 20 things that I just ran through in their release notes, the other ones that they came from me picking through the code base in the release notes to show you everything that changed. What do you think about the updates that I've covered in this SharePoint Framework release? Do you see them as a positive move or are you disappointed by how small of a bump it was? Are you interested in seeing how I go through and do this deep research and figure out what the difference is between each one? Do you find value in this kind of in-depth review beyond what you get from the release notes? It takes a lot of work for me to do this. So I wanna make sure that it's worthwhile for me to keep making these videos. So please let me know if you appreciate it, if it actually helps you by leaving a comment below the video and make sure you like it as well. And if you like this video, please give me a thumbs up and subscribe to my channel by smashing that red subscribe button below the video so you'll see when I publish more videos for web and cloud developers on Microsoft 365, Microsoft Azure, and including topics like this on the SharePoint Framework. And lastly, if you want the latest news and insights delivered straight to your email inbox, join the 10,000 plus fellow web and cloud developers who subscribe to my newsletter that's linked in the description of the video below. I'm Andrew Connell, thanks for watching and I hope to see you next time.