We Crunched 1 Billion Java Logged Errors – Here’s What Causes 97% Of Them

97% of Logged Errors are Caused by 10 Unique Errors

It’s 2021 and one thing hasn’t changed in 30 years. DevOps teams still rely on log files to troubleshoot application issues. We trust log files implicitly because we think the truth is hidden within them. If you just grep hard enough or write the perfect regex query, the answer will magically present itself in front of you.

How to sum a sub element of array [numberOfPay]?

  [
{
    "": {
        "amount": "152870",
        "kwh": "0",
        "numberOfPay": "54"
    }
},
{
    "AZARE Region": {
        "amount": "119500",
        "kwh": "0",
        "numberOfPay": "45"
    }
},
{
    "BAUCHI Region": {
        "amount": "944473",
        "kwh": "0",
        "numberOfPay": "376"
    }
},
{
    "BUKURU Region": {
        "amount": "494000",
        "kwh": "0",
        "numberOfPay": "138"
    }
},
{
    "GBOKO Region": {
        "amount": "265335",
        "kwh": "0",
        "numberOfPay": "73"
    }
},
{
    "GOMBE Region": {
        "amount": "756301",
        "kwh": "0",
        "numberOfPay": "308"
    }
},
{
    "JOS METRO Region": {
        "amount": "718000",
        "kwh": "0",
        "numberOfPay": "229"
    }
},
{
    "MAKURDI Region": {
        "amount": "1210602",
        "kwh": "0",
        "numberOfPay": "196"
    }
},
{
    "OTUKPO Region": {
        "amount": "712595",
        "kwh": "0",
        "numberOfPay": "206"
    }
}

]

Magical Marbles in Three.js

In April 2019, Harry Alisavakis made a great write-up about the “magical marbles” effect he shared prior on Twitter. Check that out first to get a high level overview of the effect we’re after (while you’re at it, you should see some of his other excellent shader posts).

While his write-up provided a brief summary of the technique, the purpose of this tutorial is to offer a more concrete look at how you could implement code for this in Three.js to run on the web. There’s also some tweaks to the technique here and there that try to make things more straightforward.

⚠ This tutorial assumes intermediate familiarity with Three.js and GLSL

Overview

You should read Harry’s post first because he provides helpful visuals, but the gist of it is this:

  • Add fake depth to a material by offsetting the texture look-ups based on camera direction
  • Instead of using the same texture at each iteration, let’s use depth-wise “slices” of a heightmap so that the shape of our volume is more dynamic
  • Add wavy motion by displacing the texture look-ups with scrolling noise

There were a couple parts of this write-up that weren’t totally clear to me, likely due to the difference in features available in Unity vs Three.js. One is the jump from parallax mapping on a plane to a sphere. Another is how to get vertex tangents for the transformation to tangent space. Finally, I wasn’t sure if the noise for the heightmap was evaluated as code inside the shader or pre-rendered. After some experimentation I came to my own conclusions for these, but I encourage you to come up with your own variations of this technique 🙂

Here’s the Pen I’ll be starting from, it sets up a boilerplate Three.js app with an init and tick lifecycle, color management, and an environment map from Poly Haven for lighting.

See the Pen
by Matt (@mattrossman)
on CodePen.0

Step 1: A Blank Marble

Marbles are made of glass, and Harry’s marbles definitely showed some specular shine. In order to make a truly beautiful glassy material it would take some pretty complex PBR shader code, which is too much work! Instead, let’s just take one of Three.js’s built-in PBR materials and hook our magical bits into that, like the shader parasite we are.

Enter onBeforeCompile, a callback property of the THREE.Material base class that lets you apply patches to built-in shaders before they get compiled by WebGL. This technique is very hacky and not well explained in the official docs, but a good place to learn more about it is Dusan Bosnjak’s post “Extending three.js materials with GLSL”. The hardest part about it is determining which part of the shaders you need to change exactly. Unfortunately, your best bet is to just read through the source code of the shader you want to modify, find a line or chunk that looks vaguely relevant, and try tweaking stuff until the property you want to modify shows visible changes. I’ve been writing personal notes of what I discover since it’s really hard to keep track of what the different chunks and variables do.

ℹ I recently discovered there’s a much more elegant way to extend the built-in materials using Three’s experimental Node Materials, but that deserves a whole tutorial of its own, so for this guide I’ll stick with the more common onBeforeCompile approach.

For our purposes, MeshStandardMaterial is a good base to start from. It has specular and environment reflections that will make out material look very glassy, plus it gives you the option to add a normal map later on if you want to add scratches onto the surface. The only part we want to change is the base color on which the lighting is applied. Luckily, this is easy to find. The fragment shader for MeshStandardMaterial is defined in meshphysical_frag.glsl.js (it’s a subset of MeshPhysicalMaterial, so they are both defined in the same file). Oftentimes you need to go digging through the shader chunks represented by each of the #include statements you’ll see in the file, however, this is a rare occasion where the variable we want to tweak is in plain sight.

It’s the line right near the top of the main() function that says:

vec4 diffuseColor = vec4( diffuse, opacity );

This line normally reads from the diffuse and opacity uniforms which you set via the .color and .opacity JavaScript properties of the material, and then all the chunks after that do the complicated lighting work. We are going to replace this line with our own assignment to diffuseColor so we can apply whatever pattern we want on the marble’s surface. You can do this using regular JavaScript string methods on the .fragmentShader field of the shader provided to the onBeforeCompile callback.

material.onBeforeCompile = shader => {
  shader.fragmentShader = shader.fragmentShader.replace('/vec4 diffuseColor.*;/, `
    // Assign whatever you want!
    vec4 diffuseColor = vec4(1., 0., 0., 1.);
  `)
}

By the way, the type definition for that mysterious callback argument is available here.

In the following Pen I swapped our geometry for a sphere, lowered the roughness, and filled the diffuseColor with the screen space normals which are available in the standard fragment shader on vNormal. The result looks like a shiny version of MeshNormalMaterial.

See the Pen
by Matt (@mattrossman)
on CodePen.0

Step 2: Fake Volume

Now comes the harder part — using the diffuse color to create the illusion of volume inside our marble. In Harry’s earlier parallax post, he talks about finding the camera direction in tangent space and using this to offset the UV coordinates. There’s a great explanation of how this general principle works for parallax effects on learnopengl.com and in this archived post.

However, converting stuff into tangent space in Three.js can be tricky. To the best of my knowledge, there’s not a built-in utility to help with this like there are for other space transformations, so it takes some legwork to both generate vertex tangents and then assemble a TBN matrix to perform the transformation. On top of that, spheres are not a nice shape for tangents due to the hairy ball theorem (yes, that’s a real thing), and Three’s computeTangents() function was producing discontinuities for me so you basically have to compute tangents manually. Yuck!

Luckily, we don’t really need to use tangent space if we frame this as a 3D raymarching problem. We have a ray pointing from the camera to the surface of our marble, and we want to march this through the sphere volume as well as down the slices of our height map. We just need to know how to convert a point in 3D space into a point on the surface of our sphere so we can perform texture lookups. In theory you could also just plug the 3D position right into your noise function of choice and skip using the texture, but this effect relies on lots of iterations and I’m operating under the assumption that a texture lookup is cheaper than all the number crunching happening in e.g. the 3D simplex noise function (shader gurus, please correct me if I’m wrong). The other benefit of reading from a texture is that it allows us to use a more art-oriented pipeline to craft our heightmaps, so we can make all sorts of interesting volumes without writing new code.

Originally I wrote a function to do this spherical XYZ→UV conversion based on some answers I saw online, but it turns out there’s already a function that does the same thing inside of common.glsl.js called equirectUv. We can reuse that as long as put our raymarching logic after the #include <common> line in the standard shader.

Creating our heightmap

For the heightmap, we want a texture that seamlessly projects on the surface of a UV sphere. It’s not hard to find seamless noise textures online, but the problem is that these flat projections of noise will look warped near the poles when applied to a sphere. To solve this, let’s craft our own texture using Blender. One way to do this is to bend a high resolution “Grid” mesh into a sphere using two instances of the “Simple Deform modifier”, plug the resulting “Object” texture coordinates into your procedural shader of choice, and then do an emissive bake with the Cycles renderer. I also added some loop cuts near the poles and a subdivision modifier to prevent any artifacts in the bake.

The resulting bake looks something like this:

Raymarching

Now the moment we’ve been waiting for (or dreading) — raymarching! It’s actually not so bad, the following is an abbreviated version of the code. For now there’s no animation, I’m just taking slices of the heightmap using smoothstep (note the smoothing factor which helps hide the sharp edges between layers), adding them up, and then using this to mix two colors.

uniform sampler2D heightMap;
uniform vec3 colorA;
uniform vec3 colorB;
uniform float iterations;
uniform float depth;
uniform float smoothing;

/**
  * @param rayOrigin - Point on sphere
  * @param rayDir - Normalized ray direction
  * @returns Diffuse RGB color
  */
vec3 marchMarble(vec3 rayOrigin, vec3 rayDir) {
  float perIteration = 1. / float(iterations);
  vec3 deltaRay = rayDir * perIteration * depth;

  // Start at point of intersection and accumulate volume
  vec3 p = rayOrigin;
  float totalVolume = 0.;

  for (int i=0; i<iterations; ++i) {
    // Read heightmap from current spherical direction
    vec2 uv = equirectUv(p);
    float heightMapVal = texture(heightMap, uv).r;

    // Take a slice of the heightmap
    float height = length(p); // 1 at surface, 0 at core, assuming radius = 1
    float cutoff = 1. - float(i) * perIteration;
    float slice = smoothstep(cutoff, cutoff + smoothing, heightMapVal);

    // Accumulate the volume and advance the ray forward one step
    totalVolume += slice * perIteration;
    p += deltaRay;
  }
  return mix(colorA, colorB, totalVolume);
}

/**
 * We can user this later like:
 *
 * vec4 diffuseColor = vec4(marchMarble(rayOrigin, rayDir), 1.0);
 */

ℹ This logic isn’t really physically accurate — taking slices of the heightmap based on the iteration index assumes that the ray is pointing towards the center of the sphere, but this isn’t true for most of the pixels. As a result, the marble appears to have some heavy refraction. However, I think this actually looks cool and further sells the effect of it being solid glass!

Injecting uniforms

One final note before we see the fruits of our labor — how do we include all these custom uniforms in our modified material? We can’t just stuck stuff onto material.uniforms like you would with THREE.ShaderMaterial. The trick is to create your own personal uniforms object and then wire up its contents onto the shader argument inside of onBeforeCompile. For instance:

const myUniforms = {
  foo: { value: 0 }
}

material.onBeforeCompile = shader => {
  shader.uniforms.foo = myUniforms.foo

  // ... (all your other patches)
}

When the shader tries to read its shader.uniforms.foo.value reference, it’s actually reading from your local myUniforms.foo.value, so any change to the values in your uniforms object will automatically be reflected in the shader.

I typically use the JavaScript spread operator to wire up all my uniforms at once:

const myUniforms = {
  // ...(lots of stuff)
}

material.onBeforeCompile = shader => {
  shader.uniforms = { ...shader.uniforms, ...myUniforms }

  // ... (all your other patches)
}

Putting this all together, we get a gassy (and glassy) volume. I’ve added sliders to this Pen so you can play around with the iteration count, smoothing, max depth, and colors.

See the Pen
by Matt (@mattrossman)
on CodePen.0

ℹ Technically the ray origin and ray direction should be in local space so the effect doesn’t break when the marble moves. However, I’m skipping this transformation because we’re not moving the marble, so world space and local space are interchangeable. Work smarter not harder!

Step 3: Wavy Motion

Almost done! The final touch is to make this marble come alive by animating the volume. Harry’s waving displacement post explains how he accomplishes this using a 2D displacement texture. However, just like with the heightmap, a flat displacement texture warps near the poles of a sphere. So, we’ll make our own again. You can use the same Blender setup as before, but this time let’s bake a 3D noise texture to the RGB channels:

Then in our marchMarble function, we’ll read from this texture using the same equirectUv function as before, center the values, and then add a scaled version of that vector to the position used for the heightmap texture lookup. To animate the displacement, introduce a time uniform and use that to scroll the displacement texture horizontally. For an even better effect, we’ll sample the displacement map twice (once upright, then upside down so they never perfectly align), scroll them in opposite directions and add them together to produce noise that looks chaotic. This general strategy is often used in water shaders to create waves.

uniform float time;
uniform float strength;

// Lookup displacement texture
vec2 uv = equirectUv(normalize(p));
vec2 scrollX = vec2(time, 0.);
vec2 flipY = vec2(1., -1.);
vec3 displacementA = texture(displacementMap, uv + scrollX).rgb;
vec3 displacementB = texture(displacementMap, uv * flipY - scrollX).rgb;

// Center the noise
displacementA -= 0.5;
displacementB -= 0.5;

// Displace current ray position and lookup heightmap
vec3 displaced = p + strength * (displacementA + displacementB);
uv = equirectUv(normalize(displaced));
float heightMapVal = texture(heightMap, uv).r;

Behold, your magical marble!

See the Pen
by Matt (@mattrossman)
on CodePen.0

Extra Credit

Hard part’s over! This formula is a starting point from which there are endless possibilities for improvements and deviations. For instance, what happens if we swap out the noise texture we used earlier for something else like this:

This was created using the “Wave Texture” node in Blender

See the Pen
by Matt (@mattrossman)
on CodePen.0

Or how about something recognizable, like this map of the earth?

Try dragging the “displacement” slider and watch how the floating continents dance around!

See the Pen
by Matt (@mattrossman)
on CodePen.0

In that example I modified the shader to make the volume look less gaseous by boosting the rate of volume accumulation, breaking the loop once it reached a certain volume threshold, and tinting based on the final number of iterations rather than accumulated volume.

For my last trick, I’ll point back to Harry’s write-up where he suggests mixing between two HDR colors. This basically means mixing between colors whose RGB values exceed the typical [0, 1] range. If we plug such a color into our shader as-is, it’ll create color artifacts in the pixels where the lighting is blown out. There’s an easy solve for this by wrapping the color in a toneMapping() call as is done in tonemapping_fragment.glsl.js, which “tones down” the color range. I couldn’t find where that function is actually defined, but it works!

I’ve added some color multiplier sliders to this Pen so you can push the colors outside the [0, 1] range and observe how mixing these HDR colors creates pleasant color ramps.

See the Pen
by Matt (@mattrossman)
on CodePen.0

Conclusion

Thanks again to Harry for the great learning resources. I had a ton of fun trying to recreate this effect and I learned a lot along the way. Hopefully you learned something too!

Your challenge now is to take these examples and run with them. Change the code, the textures, the colors, and make your very own magical marble. Show me and Harry what you make on Twitter.

Surprise me!

The post Magical Marbles in Three.js appeared first on Codrops.

How to Update Your PHP Version in WordPress (the RIGHT Way)

Do you want to update the PHP version of your WordPress site?

Using the latest version of PHP in WordPress can significantly improve your site’s performance and user experience. Many web hosting providers make the update process rather easy, but you may need to check several things before doing it.

In this article, we will show you how to easily update the PHP version of your WordPress website.

How to Update Your PHP Version in WordPress (the RIGHT Way)

Why Update PHP Version in WordPress?

Updating your WordPress website’s PHP version can boost your site’s performance.

You see, WordPress is developed using an open-source programming language called PHP. At the time of writing this article, it requires at least PHP 7.4 or greater.

New PHP versions usually come with patches for security vulnerabilities and bugs, protecting your site against malware and hackers. It also includes new features to make running processes much faster and reduce memory usage.

Because of this, we strongly recommend updating your WordPress to the latest stable version of PHP. At the time of writing this article, that is PHP 8.3.2.

If you use an older PHP version, your website may be less secure, slower, and prone to errors due to compatibility issues with WordPress core, plugin, or theme. You can learn more about this topic in our article about how PHP updates by your web host impact WordPress.

Thankfully, most WordPress hosting companies strive to offer the newest PHP versions to meet WordPress’ requirements. They may also automatically update PHP behind-the-scenes and you may not notice any change.

That said, we suggest keeping up-to-date with the latest PHP news. Check what kind of features or changes may affect your WordPress website. A plugin, theme, or software may not work after the update and you have to switch back to an older version of PHP in the meantime.

With that in mind, let’s look at how you can check your current PHP version in WordPress. We will also show you a step-by-step tutorial on how to update your PHP version in different hosting providers.

How to Check Your Current PHP Version in WordPress

WordPress makes it easy to check the version of PHP used by your host. What you need to do is log in to your admin dashboard and head to the Tools » Site Health page.

Then, switch to the ‘Info’ tab.

Opening the Info tab inside the Site Health menu in the WordPress admin area

Next, you need to scroll down a little and click to expand the ‘Server’ tab. This section shows your server’s system information, including its PHP version.

As you can see in the screenshot, our demo website uses PHP version 8.1.

Checking your server's PHP version in the WordPress Site Health page

What to Do Before Updating PHP in WordPress

As with any updates, you want to make sure your live site won’t experience any errors before making the changes official. For this reason, you need to do the following before updating your PHP version:

  • Update WordPress core, themes, and plugins – Doing this can ensure they can operate effectively with the new PHP. Must-have WordPress plugins from reputable developers will usually be readily compatible with newer versions of PHP.
  • Back up your website – Use a backup plugin like Duplicator to create a website backup in case of issues. You can easily restore your site to an error-free version if disaster strikes.
  • Create a staging site – We recommend trying to update your PHP in a staging environment so that any errors caused by the new PHP version won’t affect your live site.
  • Use the PHP Compatibility Checker plugin – Created by WP Engine, this plugin can identify potential issues that may come up from the new PHP version.

How to Update Your PHP Version in Bluehost

First, you need to log in to your Bluehost hosting account’s control panel and click on the ‘Websites’ tab in the left column.

After that, select the website whose PHP version you’d like to update, and click the ‘Settings’ button.

Bluehost site settings

Now, go ahead and switch to the ‘Settings’ tab.

This is where you can see and configure the advanced settings of your WordPress blog or website.

Opening the Settings tab inside the Websites menu in Bluehost

What you need to do now is scroll down to the PHP Version section.

After that, click ‘Change’ next to your current PHP version.

Clicking the Change button in Bluehost to update a website's PHP version

Now, go ahead and select the PHP version you want to update to. Then, simply click the ‘Change’ button.

Bluehost will now start using the selected PHP version for your website.

Selecting a PHP version to update to in Bluehost

How to Update Your PHP Version in Hostinger

First, log in to your Hostinger account dashboard and switch to the ‘Websites’ tab.

From here, you need to click the ‘Manage’ button next to the website where you want to change the PHP version.

This will take you to that particular website’s dashboard.

Switching to the Websites tab in Hostinger and clicking the Manage button

Next, locate the ‘PHP Configuration’ tab under the Advanced menu from the left sidebar.

Hostinger will now show you available and supported PHP versions to choose from.

Select the PHP version you want to use and click the ‘Update’ button to save your settings.

Updating PHP version in Hostinger

A popup will appear asking you to confirm your website, blog, or online store’s PHP update.

Simply click ‘Confirm’ to continue.

Confirming a PHP version update in WordPress

How to Update Your PHP Version in SiteGround

If you are using SiteGround, then here is how you will update the PHP version of your WordPress website.

First, you need to log in to your SiteGround account dashboard.

After that, go to the ‘My websites and services’ section and click the ‘Manage’ button inside Websites.

Clicking the Manage button inside the SiteGround control panel

You will now arrive at the My Websites page.

Just click on the ‘Site Tools’ button under the website you want to update the PHP version in.

Clicking on Site Tools inside the SiteGround control panel

Next, you need to select the ‘PHP Manager’ menu inside the ‘Devs’ section from the left column.

From here, you can scroll down to the PHP Version tab and click the pencil button next to your PHP version.

Opening SiteGround's PHP Manager and clicking the pencil button there

This will bring up a popup. You first need to select ‘Change PHP version manually’ under the ‘Set PHP Version’ option.

After that, you will be able to select your PHP version from a dropdown menu.

Don’t forget to click on the ‘Confirm’ button to apply your changes.

Changing the PHP version in SiteGround

How to Update Your PHP Version in HostGator

What you need to do first is log in to your HostGator hosting account dashboard and click on the ‘Websites’ section.

After that, click the ‘Settings’ button on the website whose PHP version you want to update.

Opening the Websites tab in HostGator and clicking the Settings button

Next, simply switch to the ‘Settings’ tab.

In this section, you can manage your website’s advanced settings.

Opening the Settings section in HostGator

At this stage, just scroll down to the PHP Version section.

Then, click ‘Change’ next to your current PHP version.

Clicking the Change button in the PHP Version section inside HostGator

You will see a popup asking you to select the PHP version you want to update to.

Once you’ve made your choice, just click the ‘Change’ button.

Changing the PHP version in HostGator

How to Update Your PHP Version in DreamHost

If you are a DreamHost user, you need to log in to your hosting account’s control panel. After that, navigate to the ‘Manage Websites’ tab from the left-side panel.

On the list of websites, just click the three-dot menu and choose ‘PHP Version.’

Opening the Manage Websites section and clicking PHP Version in DreamHost

You will be directed to the PHP settings page inside the control panel.

Go ahead and choose a PHP version from the dropdown menu. Then, click ‘Change PHP Version’ to continue with the update.

Changing the PHP version in DreamHost

How to Update Your PHP Version in WP Engine

WP Engine is a managed WordPress hosting company, which means they automatically upgrade the PHP version for you. However, you can also manually upgrade and downgrade the PHP version for your websites.

Simply log in to your WP Engine dashboard. On the ‘My Sites’ page, click on the PHP version next to your selected website.

Clicking the PHP number link in WP Engine

This will bring you to your website’s Overview settings. Here, WP Engine has a feature where you can preview your website on the latest PHP version without actually changing the PHP version.

If you want to try it out, go ahead and click ‘Preview PHP …’

The PHP Test Driver feature in WP Engine

To actually update PHP in WP Engine, scroll down to the ‘Updates’ section.

Then, click on the PHP version number link.

Changing the PHP version in WP Engine

Now, just choose the ‘Upgrade to PHP … ‘ option.

After that, click on the ‘Confirm’ button.

Confirming to update the PHP version in WP Engine

How to Update Your PHP Version in Other WordPress Hosting Providers

Most WordPress hosting providers organize their settings in a more or less similar way. You will most likely find the option to change a PHP version in the advanced settings of your cPanel or any other hosting control panel.

If you cannot find it, then you can check your provider’s knowledge base or contact their support team to change the PHP version of your website. For more information, you can check out our article on how to ask for WordPress support.

Changing PHP Versions in WordPress: Frequently Asked Questions

Now that we’ve discussed how to update your PHP version in WordPress, let’s cover some frequently asked questions about the topic.

What should you do after updating the PHP version?

After updating the PHP version for your WordPress website, you may want to ensure that everything is working as expected. We recommend visiting your website to see if there are any immediately noticeable issues.

After that, you can log in to the WordPress admin area of your website. Ensure your website uses the latest version of WordPress and all your plugins and themes are updated.

See our beginner’s guide on how to safely update WordPress for more information.

What do I do if a PHP update breaks my WordPress website?

It is unlikely that a PHP update will break a WordPress site. However, with the abundance of free and premium plugins, there is still a chance that a single line of poor code can result in any of the common WordPress errors.

First, you must ensure it is not a plugin or theme causing this error. To do that, you need to deactivate all your WordPress plugins and switch to a default WordPress theme.

If this does not solve your issue, then contact your web host’s support team. There is a good chance that the issue you are facing will already be on their radar, and they will be able to assist you.

If your web host is unable to help you out, then you can downgrade your PHP version using the methods described above.

We hope this article helped you learn how to update the PHP version of your WordPress site. You may also want to see our list of the fastest WordPress hosting providers on the market or our ultimate WordPress SEO guide to boost your search engine rankings.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Update Your PHP Version in WordPress (the RIGHT Way) first appeared on WPBeginner.

Nevada bans ‘racially discriminatory’ school mascots, ‘sundown sirens’

Nevada Gov. Steve Sisolak (D) on Friday signed a bill that directs local school boards to ban racially discriminatory mascots, logos and names and bans the use of so-called sundown sirens.

The Associated Press reports that the bill will not affect universities or schools that have agreements in place with local tribes who have given permission to the schools to use "Indians" as mascots such as Elko High School in Elko County.

This new bill could affect up to 20 different schools in one Nevada county alone, the AP notes. In the Clark County School District, Western High School has a mascot that is a Native American wearing a headdress.
Along with banning certain names, the legislation will ban the use of "sundown sirens" which were historically used to signal that it was time for non-white people to leave town. The AP notes that some towns in northern Nevada like Minden still continued to sound the sirens even after ordinances requiring non-white people to leave were repealed.

The bill will also require the Nevada State Board of Geographic Names to recommend that the federal government rename geographic features and places with offensive names.

This comes as national awareness rises around mascots that Native Americans have long considered to be offensive. The newly-named Washington Football Team announced last year that they would be changing their name following years of refusing to drop the racially insensitive term from their team name.
Owner of the Washington Football Team, Dan Snyder, had previously stated that they would "never the change the name."

Its that simple. NEVER you can use caps," Snyder told USA Today in 2013.

A new mascot for the football team has yet to be decided on.