What's the Difference Between .NET, .NET Core, and .NET Framework

Even years after the changes, many people are confused by all of the different “dot nets” that have existed and still exist. Read on to find out what’s going on and we’ll remove that confusion around .NET Framework, .NET Core, .NET.

If you'd rather watch a video on this topic, you can check out my [What's the Difference between .NET Framework and .NET Core?](https://youtu.be/dLRd_LjVjNs) video on YouTube (or watch here).

Abbreviated History of .NET

Let’s understand the confusion by looking quickly at the history of our .NETs.

Brief Early .NET History

The first of these “.NETs” we got was the .NET Framework, which was a framework for building Windows applications. It’s been around for decades and still runs many applications to this day.

Early .NET Framework Logo

We had some variations of this that we won’t cover for now, but Microsoft eventually created an alternate option called .NET Core. Core removed the dependence on Windows, which allowed it to be cross-platform. It was neither a subset nor a superset of the existing .NET Framework, since they did take the chance to change some things as they removed some of the old baggage.

.NET Core Logo

The Time of Parallel .NETs

After .NET Core came around, most of the people with connections to the developer division at Microsoft likely told you that .NET Core was the future, despite the many reassuring statements from Microsoft about fully supporting and maintaining the .NET Framework for years.

All of my new projects (that could be) were created on .NET Core, and I insisted to all of my clients that they follow the same policy. I’m glad we did, because .NET was/is the future of .NET (more on that below).

At this point, we had 2 separate .NET implementations, one that had a lot of legacy and was windows-focused and another without that legacy and was cross-platform. This alone had some confusion, since people didn’t know which to use for new projects. Some people thought that Framework was if you were on Windows only and Core was for non-Windows or both. That was wrong, but understandable how that mistake was made.

Many companies were not switching to .NET Core, because they thought it was an “alternate path”, not the future of .NET.

The Union of the .NETs

I wasn’t in the backroom at Microsoft when they decided this, but I’m sure they were trying to figure out how to get everyone to switch to .NET Core and leave .NET Framework as a relic. Many companies were reluctant to put in the effort, so they decided to “merge” the two together into “.NET”.

.NET Logo

Since .NET Core’s and .NET Framework’s major version numbers were on 3 and 4 respectively, they decided to start the “merged” .NET at 5 (an increased number regardless of your starting point).

Awesome! So you might be wondering, what is this new .NET that isn’t Core or Framework, well, it is .NET Core, but they dropped “Core” from the name to make it clear that it’s the future and not an alternative. In doing this, they’ve removed the “is this the new path or an alternate path?” question.

The Takeaway

At this point, we’re in the same place we have been for a while. Your answer for, “which should I choose” is .NET latest version, not “Core” or “Framework” anymore.

.NET Logo

If you require Core or Framework for some reason (highly unlikely that you do), you can create those, but the future is the .NET for any project you may start.

If you’re building a Windows application, you can build WinForms, WPF, UWP, MAUI, etc. using .NET, so there’s very little reason to pick Framework for those.

Intentionally Not Covered Topics

You may have noticed that I didn’t talk about any of the other .NETs that exist. I may explain those in future posts and/or videos, but I wanted to clear up this confusion without adding those extra bits that might make it harder to come across.

Have a great day, and happy coding, everyone!

How To Stop Websites Asking For Notifications And Locations

Stop asking to send me notifications! I don’t want them! I also don’t want to tell your site my location.

Are you tired of being asked if sites can send you notifications or get your location? Yeah, me too. Let’s fix that.

How to Stop Sites In Chrome Asking to Send Notifications or Location

Open up Chrome, and look for the 3 dots in the upper right corner of the window. That will open up the options menu that looks like this.

Chrome Options Menu

From that menu, click on Settings seen here:

Chrome Options Menu with Settings Highlighted

Once on the settings screen, you’ll see a search bar like this. Click into it.

Chrome Settings Search Bar

Type the word “notifications” into the search to yield results like this.

Chrome Settings Search Notification Results

From here, you’ll want to open up the Site Settings section of the results, highlighted here. Notice that the search is also indicating that it found results in there.

Chrome Settings Search Notification Results Highlighted

In the Site Settings screen, you’ll find a section called Permissions, which is where we’ll be making our changes.

Chrome Site Permissions

Two sections in Permissions matter to us, the Location and Notification sections. Open up the Notifications first.

Chrome Site Permissions Highlighted

Disabling Chrome Notification Request Permissions

On the Notifications Permissions screen, you’ll likely find these settings (the default).

Chrome Site Notification Default Permissions

To remove the permissions from all sites asking to send notifications, select the Don't allow sites to send notifications option, which will prevent sites from even asking to send notifications.

Chrome Site Notification Blocked Permissions

Now click the back button to also remove Location Request permissions.

Disabling Chrome Location Request Permissions

Open up the Location Permissions screen, and you’ll likely find these settings (the default).

Chrome Site Location Default Permissions

To remove the permissions from all sites asking to request your location, select the Don't allow sites to see your location option, which will prevent sites from even asking to know your location.

Chrome Site Location Blocked Permissions

Keep in mind that some sites will not work if knowing your location is required for the site to work. If this happens, you can come back to site settings and configure the permissions for that site, giving it location permissions.

How to Stop Sites in Firefox Asking to Send Notifications or Location

Open up Firefox, and look for the 3 lines (hamburger menu) in the upper right corner of the window. That will open up the options menu that looks like this.

Firefox Options Menu

From that menu, click on Settings as seen here.

Firefox Options Menu with Settings Highlighted

Once on the settings screen, you’ll see a search bar like this. Click into it.

Firefox Settings Search Bar

Disabling Firefox Notification Request Permissions

Type the word “notifications” into the search to yield results like this.

Firefox Settings Search Notification Results

The Settings... button that has the notification note above it is the one we want to open, which will bring us to this screen with the checkbox we want.

Firefox Settings Notification Permissions

To disable these requests from all sites, check the Block new requests asking to allow notifications checkbox and click save.

Firefox Settings Notification Permissions Blocked

Disabling Firefox Location Request Permissions

Type the word “location” into the search to yield results like this.

Firefox Settings Search Location Results

The Settings... button that has the location note above it is the one we want to open, which will bring us to this screen with the checkbox we want.

Firefox Settings Location Permissions

To disable these requests from all sites, check the Block new requests asking to access your location checkbox and click save.

Firefox Settings Location Permissions Blocked

Keep in mind that some sites will not work if knowing your location is required for the site to work. If this happens, you can come back to site settings and configure the permissions for that site, giving it location permissions.

How to Stop Sites in Edge Asking to Send Notifications or Location

Open up Edge, and look for the 3 dots in the upper right corner of the window. That will open up the options menu that looks like this.

Edge Options Menu

From that menu, click on Settings as seen here.

Edge Options Menu with Settings Highlighted

Once on the settings screen, you’ll see a search bar like this. Click into it.

Edge Settings Search Bar

Disabling Edge Notification Request Permissions

Type the word “notifications” into the search to yield results like this (scrolled down to this point).

Edge Settings Search Notification Results

The Notifications button in All permission is the one we want to open (it’s marked by the search result indicator). Clicking it will bring us to this screen with the toggle we want.

Edge Settings Notification Permissions

To disable these requests from all sites, toggle the Ask before sending (recommended) option off like this.

Edge Settings Notification Permissions Blocked

Disabling Edge Location Request Permissions

Type the word “location” into the search to yield results like this.

Edge Settings Search Location Results

The Location button in All permissions is the one we want to open (it’s marked by the search result indicator). Clicking it will bring us to this screen with the toggle we want.

Edge Settings Location Permissions

To disable these requests from all sites, toggle the Ask before accessing (recommended) option off like this.

Edge Settings Location Permissions Blocked

Keep in mind that some sites will not work if knowing your location is required for the site to work. If this happens, you can come back to site settings and configure the permissions for that site, giving it location permissions.

Moved My Site to GitHub Pages

Screen shot of the blog with its hydeout theme

After more than a decade of maintaining a BlogEngine.NET site, I’ve finally bitten the bullet and moved to a static site. I’d meant to do this a few times in the past, having looked at a couple of C# static site generators, Jekyll, Wyam, and a few others as well. I debated switching to WordPress as well, but that move wouldn’t have gained me much, since I really wanted to move to a static site.

Hey chatter! I'll be posting another update soon that talks about how I migrated from BlogEngine.NET to Jekyll on GitHub Pages.

Why a Static Site?

I chose to move to a static site for a few reasons. I’m tired of dealing with hosting a site, database, etc. for a blog. Considering that a blog is about the simplest set of content you can get, it seems overkill to maintain a SQL Database for that.

Now, I could’ve moved to a file-based data approach with my previous engine (it supports it), but I’d still be maintaining and paying to host a site. And to top it off, AspNet sites take some time to boot up on first hit, which I’d rather not deal with. I wanted to get rid of the backend-site.

Why GitHub Pages with Jekyll?

It’s free. It’s easy. It’s ubiquitous. I already use GitHub, and I’m proficient with GitHub Actions (a topic I will be discussing on future posts, videos, and streams), which I would use if I’m ever planning to make it more advanced than it is. Would also be useful for setting up a static site without Jekyll, since that’s the one that GitHub pages uses.

Breaking The Toughest Developer Puzzle Ever

More than a decade ago, a developer named Jeff Blankenburg created a game called The Toughest Developer Puzzle Ever (TDPE), and I participated in both iterations of the puzzle. For these, I created and hosted some of the puzzles in the sequences of Jeff’s games. In order to not break my part of the game, I made sure to maintain a blog that could still host the old pages.

See Old TDPE Blog Post for more info.

As such, I used a C# blog engine, which meant that around that time, I moved my blog to BlogEngine.NET and it remained there until now.

Theme Choice

I wanted to have a simple theme that didn’t do too much yet. Maybe I’ll grab a more advanced one at some point, but this has enough features for my initial move. I chose to use hydeout (is it still?), because it’s a simple sidebar layout. I like the sidebar as it keeps it on-screen effectively for widescreen computers. I expect most of the traffic to a tech blog will be from laptops/desktops, not phones.

I’ve got basic support for tags, categories, and some other basics without too much bloat. What theme are you using for your site? If you’re here in the future, does it still look the same?

Set Up Custom GitHub Pages Domain with Google Domains

GitHub Logo

Google Domains Logo

Intro

I recently set up my blog on GitHub pages, but I didn’t want the *.github.io domain name. I have some of my domains in Google Domains, so I decided to set one of those up and write this tutorial for you after setting it up. Follow these steps and you too can have a custom domain.

Step 0: Build a GitHub Pages Site and Own a Domain with Google Domains

Before you can set up the connection between GitHub Pages and Google Domains you’ll need to have the site set up and the domain owned already.

Once you have those two things set up, come back here and you can set up your custom domain.

Step 1: Configure DNS in Google Domains

Go to the Google Domains Registrar, which should contain a list of domains you own there, and select the domain you want to configure.

Google Domains Registrar List

After clicking on the domain, you’ll need to go to DNS in the left navigation.

Google Domains Sidebar Navigation

Set Up the DNS A Records

First, you’ll want to set up the A Records to point your domain at the IP Addresses for GitHub Pages, so it looks like these:

Google Domains Custom Records View

Click on Manage Custom Records to edit those on a screen like this:

Google Domains Custom Records Edit

In that first record, leave the Host name blank, set the Type to “A”, and the Data to the first IP Address. Then you click the + Add more to this record until you’ve added all of these addresses.

  • 185.199.108.153
  • 185.199.109.153
  • 185.199.110.153
  • 185.199.111.153

You can check the GitHub Pages Custom Domain Docs for the most up-to-date list of IP Addresses.

Set Up the DNS CNAME Record

Next, while still on the Manage Custom Records screen, you’ll want to set up the CNAME Record to point to the custom subdomain you have at GitHub, mine is benrick.github.io. This will help if anyone tries going to the “www” version of your site.

Click on Create new record to add a new row to create the CNAME record like this:

Google Domains Custom Records Edit

Just be sure that you set the Host name to “www”, the Type to “CNAME” and the Data to your “*github.io” subdomain.

Step 2: Configure the Custom Domain in GitHub Pages

Now that our records are in place, we can tell GitHub to check for them. As with all DNS changes, it can take some time to propagate, so you may have to wait until GitHub can verify.

From your GitHub repository, click on the “Settings” tab.

GitHub Repository Top Nav Settings

From the Settings screen, you’ll click on the “GitHub Pages” link in the sidebar navigation.

GitHub Settings Side Nav

Now you’ll want to change the Custom domain to your domain name that we just configured and save that change, which causes GitHub to run a check of the DNS settings.

GitHub Pages Settings Custom Domain

After verification, the page will look like this:

GitHub Pages Settings Custom Domain Verified

Note here that I've enabled HTTPS for the site. While it's optional, enforcing HTTPS is a good idea!

Step 3: Enjoy Your Site on its Custom Domain

Now you should be able to navigate to the site and see GitHub Pages site hosted using your custom domain name!

SOLID Saturdays on DevChatter

I’ve started our second series on DevChatter. We’re doing SOLID Saturdays now, which means that we’re dedicating each Saturday to a SOLID Principle of Object Oriented Design. Very likely, after we’re done with 5 SOLID Principles, we’ll add a few bonus SOLID Saturdays with the concepts of DRY, YAGNI, and maybe a couple of other good principles.

So far, we’ve completed 3 of the SOLID Principles, Single Responsibility Principle, Open/Closed Principle, and Liskov Substitution Principle. You can watch the videos of our SOLID Principles Series on Twitch. In each of those episodes, we started off by discussing the principle, why it’s important, and how to notice violations of it. We talked about where we’re following it in our code, and looked at real examples of the principle, rather than just some contrived examples. We then spend the rest of the stream writing code, and where it’s applicable, we mention the principle again.

solid

In our next episode, we’ll be looking at Interface Segregation Principle, which will give us the chance to make some changes to our codebase and improve our interfaces to better match the design that Interface Segregation Principle would push us toward.

Join us each Saturday at 1:00 PM Eastern Time to learn more about SOLID programming and see some live coding as well.