WordPress Green Lights In-Person Meetup Events for Vaccinated Attendees

After considerable discussion, the WordPress Community Team is lifting the requirements of the in-person meetup safety checklist for meetups that gather fully-vaccinated attendees. The checklist is still applicable to all meetup groups but in places where vaccines are freely available, meetup organizers can now forego its requirements if they limit gatherings to those self-reporting as fully vaccinated.

When Andrea Middleton proposed adding vaccination status to the checklist in mid-May, the idea was met with a wide range of concerns and strong opinions. WordPress’ global community has experienced the pandemic in different ways, living under a spectrum of local restrictions, with disparate access to vaccines and varying responses to available vaccines. Some participants in the discussions were concerned about organizers having to request information about vaccination status from attendees, which is illegal in many places. Middleton clarified that attendance would be based on the honor system, and organizers would not be requesting any health information from individuals.

“The WordPress community team is not expecting or requiring local organizers to organize in-person events for fully-vaccinated people — we’re simply removing the barrier to doing so,” she said. The decision announcement includes a flow chart for the conditions that are now in place:

Middleton characterized the proposal as contentious and something that may be an unpopular decision. Participants in the discussion got heated in expressing their opinions, which varied greatly based on each person’s unique pandemic experiences and convictions.

While some think it overstepping to prohibit unvaccinated people from attending meetups, others think only allowing vaccinated attendees would create a “two-tiered” meetup program.

“This proposal means that multiple groups of people will no longer be allowed to attend our meetings,” Taco Verdonschot commented. “They’re limited to the meetings that are streamed online. They’re basically second class citizens in our community now. They can’t join the party, they have to watch through the window. Just this idea makes me extremely uncomfortable.”

Verdonschot cited several examples of people who might be excluded by the proposal to restart meetups for vaccinated attendees:

  • People with a low income in areas where the vaccines aren’t provided for free
  • Younger people in countries where vaccinations are administered to the elderly first, and only slowly make their way to the younger generations (like The Netherlands)
  • People who cannot get a vaccination for medical reasons, for example, because of known allergic reactions to vaccinations
  • Pregnant women
  • People with a limited immune system
  • People whose religion doesn’t allow them to get vaccinated

“I realize there are some on the team who do not agree, and I hope that these guidelines are flexible enough that you are able to disagree and commit in this case,” Middleton said in the decision announcement. 

“While I agree that it’s only a matter of time when fully-vaxxed-only meetups are a thing of the past, I do think it’s important to make that possible for our communities.”

Automattic Releases Sketch Block for Drawing in the WordPress Editor

Automattic released a new plugin titled Sketch Block earlier today. It is a one-off block that allows end-users to draw directly in the editor. The plugin is marked as a beta release and requires Gutenberg to be activated to use. It is a part of the company’s Block Experiments project.

To be perfectly honest, I spent an excessive amount of time playing around with this block plugin today. And, if I am going overboard with that honesty, most of that time was just trying to write out my name. It was hard not to. Drawing things directly in the editor is just kind of fun.

I am unsure how many practical uses the plugin actually has at its current stage, but not everything needs a purpose outside of pure entertainment. Like an embedded Block-a-saurus game and ghost-written headings, sometimes we just need reminders about the wild and whacky side of the web. We also need to experiment with new ideas from time to time, which can lead to unexpected discoveries, creating the foundation of future technological advancements.

Sometimes we just need to relieve some stress and sketch out our names in a new tool.

I tested the block using my laptop’s trackpad — not an ideal method for freehand drawing. Unfortunately, I did not have access to a larger touchscreen device for a more thorough test.

The block offers a limited number of controls as of version 1.0.7. Users can select between three different stroke widths and choose from their theme’s color palette. The block’s height can be resized, but there seems to be a minimum of 200px.

I did manage to break it a few times, running into the “This block has encountered an error and cannot be previewed” error. There also seemed to be an unknown minimum width, which could not be adjusted. My goal was to create a columnized team page with each member’s signature beneath their profile photo. However, the Sketch block kept breaking outside of my columns. In the end, I created a single-member bio section:

Profile card in the WordPress editor, signature written beneath the profile photo.
Creating a profile card with Sketch Block

The plugin is built on top of the Perfect Freehand JavaScript library. When comparing Automattic’s block implementation to the library’s demo, the plugin falls short of offering the same experience in block form.

Perfect Freehand’s demo felt smoother. I was able to consistently draw with more accuracy using my laptop’s trackpad. I do not know if just the size of the drawing area made a difference or if the editor interfered with the feeling.

"Justin" written in the Perfect Freehand demo, hand-drawn.
Drawing in the Perfect Freehand demo.

The JavaScript library has a ton of extra options too. Users can transform even the worst drawing into something a bit cleaner with the thinning, smoothing, streamline, and other controls. I would love to see the Sketch Block plugin integrate the full suite of tools available through Perfect Freehand.

Despite a few bumps, the plugin is a solid first release for a beta project. I am eagerly waiting for what future versions have in store. I also wonder what applications it might have outside of piddling around for fun, such as notetaking or animations.

The Trick to Enable Printify Shipping Notifications for Orders in WooCommerce? Customer Notes.

This is a super niche blog post. But it’s been on my list forever to write down because this caused me grief for far too long.

The setup is that you can use WooCommerce to sell things on a WordPress site, of course. If what you’re selling is a physical product, one thing you can do is set that up as print-and-ship on-demand. That’s what I do, for example, with our printed posters and sweatshirts. One company that does that, and the one we use right now, is Printify. It’s not even a plugin, it’s just APIs talking to each other.

That all works fine. The problem I was having? Customers weren’t getting any shipping notifications.

For a long time, I thought this was just something Printify punted on. For example, Printify doesn’t provide customer service to your customers, only to you. So if your customer has a problem, they contact you, and if it seems like it’s a Printify problem, you need to then contact them to figure it out. That’s not my favorite, but it’s understandable, as you are acting as the storefront here and things can go wrong with orders that the store needs to deal with, not Printify.

But no shipping notifications seems bananas. That’s like table stakes for eCommerce. Not to mention you can see shipping information in the Printify dashboard. So it was a lot of…

  1. Customer wonders where order is
  2. Customer is annoyed they didn’t get any shipping notification
  3. Customer emails me
  4. I look up shipping/tracking information
  5. I send to them manually

That’s just not tenable.

The thing is though, it’s supposed to work, and it does through a sneaky little feature of core WooCommerce itself.

So an order comes in, and I can see it:

Once the payment is solid, it’ll kick over to Printify, and I can see the order there too.

Once Printify has tracking information, it becomes available in the Printify dashboard:

Most orders do. Some orders just randomly don’t — although that’s mostly international orders (e.g. from the U.S. to another country)

The trick is that this tracking information doesn’t just stay in Printify. They API it over to the WordPress site as well in the form of a “note” on the order. So you can see it there:

Showing shipping information in a meta box in the WordPress editor for an order. The box is a light blue with shipping information for a CSS Grid power, and CSS Flexbox poster with a URL to the tracking status.

Notes are, in a sense, kind of abitrary metadata on orders. You can just type whatever you want as a note and either add it privately or visibly to the user.

Showing a meta box in the WordPress editor with a white textarea with an Add Note label and a typed note in it that says I hope you love the poster! Take a photo of it and send it to me if you wanna! There is an option selected to display the note to the customer.

That was all happening normally on my site.

Here was my problem:

The email notification settings screen in WooCommerce settings showing a list of notifications and one highlighted for a custom note notification.
My “Customer note” email was turned off.

I was confused I guess because I didn’t really understand the “Notes” idea in WordPress and it wasn’t documented anywhere saying that is how Printify communicates this information. It just dawned on me looking at it for the 100th time. Why that was off? I don’t know. Does it default to off? Did I turn it off because I didn’t understand it, and turning off customer-facing emails I don’t understand felt right at some point? Again, I don’t know. I also maybe just assumed that Printify would email the customer the tracking information because they have that information, as well as the customer email. Who knows.

With it on, though, it works!

Point is: by turning this email on, it went from a ton of very manual customer service work to almost none. So I wanted to get it blogged in case anyone is in this frustrating situation like I was.


The post The Trick to Enable Printify Shipping Notifications for Orders in WooCommerce? Customer Notes. appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.

Gusto Adds Embedded Payroll Services via API

Gusto, a provider of cloud-based payroll and human resources services, has announced the release of the company’s Gusto Embedded Payroll API platform. The new API-based service will allow partners to more tightly integrate Gusto payroll services into their applications. 

Gusto’s blog post announcing the product notes that:

Full-Text Indexing in Nebula Graph 2.0

1. Introduction

Nebula Graph 2.0 supports full-text indexing by using an external full-text search engine. To understand this new feature, let’s review the architecture and storage model of Nebula Graph 2.0.

1.1 Architecture of Nebula Graph

Architecture of Nebula Graph

The Beginners Guide to Conducting a Video Interview

Interviewing is a crucial step in the employee selection process. When done effectively, it helps you gauge how well an applicant’s skills, experience, and knowledge meets the job’s requirements and how they would fit in with your company’s corporate culture.

Thanks to technology, you can take it a step further and conduct video interviews to interact with the applicant face-to-face.

The idea of holding a video interview may seem like a nerve-wracking prospect, but it can be beneficial. Interviews finish faster, and you won’t have to rely on a piece of paper to assess a candidate—they’ll be right in front of you!

In this guide, I’ll tell you how to do an in-person video interview correctly, thereby increasing your chances of hiring the right person for the job.

What is a Video Interview?

Put simply, video interviews are face-to-face interviews conducted online.

These interviews give recruiters and employers a meaningful way to interact with candidates who may be remote or currently working without the hassle of being physically present. It is especially useful to interview passive candidates who cannot or will not take a vacation day from work to come in for an interview.

Online interviews let you assess applicants’ qualifications, soft skills, and more during the hiring process.

While a video interview isn’t a perfect replacement for traditional interviews, they certainly have a few hard-to-miss benefits, leading to better hiring decisions. For instance, unlike a phone interview, you can read a candidate’s body language and facial cues, giving you a better idea about their personality and soft skills.

You can even record the virtual interview and replay it later when comparing candidates. Sometimes, a second glance makes all the difference between a good and bad hire.

The Basics of a Video Interview

Video interviewing is a fairly straightforward practice. While you have free rein on how you approach your candidates, there are a few basics to keep in mind.

Outline the Process

Having interviewed several candidates in my career, I can vouch that being prepared can go a long way—even when you’re the one conducting it.

Put a formal plan together with your entire hiring team. Brainstorm ways to source and hire top-level talent and simultaneously streamline the recruiting process. Here’s a list of questions to consider:

  • Do you want the candidate to complete specific steps ahead of time? This can include submitting additional work samples or taking a pre-employment test.
  • Do you plan on sharing documents on your screen with the candidate? Will you have to prepare a slide presentation for it?
  • What would you do if the internet connection—either yours or the candidates—starts having problems?
  • How can you make a candidate feel more comfortable and relaxed?

Every member of the hiring team should be actively involved in this step. With many workforces going remote, one doesn’t really have the luxury of popping over to someone’s desk for clarification. So it’s better to be clear with questions and suggestions.

Make sure your procedural outline contains all information and details to prevent any miscommunication.

Equipment Set-Up

Conducting a video interview won’t be possible without specific equipment and tools. Therefore it’s best to understand and have experience using them beforehand.

You’ll need video interview software (we discuss this in more detail in a bit) followed by some basic equipment, such as a webcam, speaker, and microphone. Latest computers and laptops already have these three built-in, so it’s likely you already have this sorted.

Next, you’ll require a reliable and high-speed internet connection. If you’re using Wi-Fi, you can try moving your devices closer to the router and disconnect other devices and users while conducting the interview.

Consider holding a few test interviews with your team members to ensure everyone knows how to set up audio and video functions, mute themselves, chat, and share their screen during the interview.

Below is a quick checklist to ensure all your equipment is functioning properly before the interview:

  1. Do a sound, microphone, and camera check. You can also record to see how you look and sound and make adjustments as required.
  2. Check whether the camera is at eye level.
  3. Check your internet connection.
  4. Close all unnecessary tabs and applications.
  5. Sign in to the video interview platform.
  6. Charge all your devices.
  7. Ensure nothing containing private or sensitive information or anything inappropriate in your background that viewers can see in the video.

Candidate Communication

You can’t have a video interview without the candidates. Precisely why you should keep them in the loop concerning the interview.

First and foremost, send out invites to all of your top candidates ASAP to coordinate schedules.

Ideally, it’s best to send out invites as soon as you decide to interview a candidate. Make sure to include a link to the meeting and password in your mail, as well as any detailed instructions to help them download and operate the video conferencing software you use.

Next, send a reminder email to all participants a day before the interview.

Waiting around for a candidate who doesn’t show up for an interview is a huge waste of time. And let’s not forget how time-consuming rescheduling interviews can be.

The last step is to inform the clients about your decision after conducting the interview and shortlisting candidates.

Interview Preparation

Just like any other interview, don’t try to wing it. You must have the interview questions you plan on asking ahead of time. Keep the list in front of you to keep the interview on track and ensure all your questions get answered.

Consider starting with some icebreaker questions to put the candidate at ease. Remember, video interviews make people nervous—more so for the candidates. From there, you can move on to asking more in-depth questions focused on the job.

Ask the candidate about their skills and prior work history, expectations, and situational questions. Behavioral-based interview questions can help you delve deeper into the candidate’s critical skills.

Another important aspect of your interview prep is having a compelling company culture pitch.

One of the main challenges with video interviews is that your candidates have no idea about your company culture. Preparing a compelling story about your culture and values will help compensate for that. Think about any visual materials you can share with candidates during or after the interview, such as showing employee testimonials or social media posts capturing meaningful moments and answer any questions the candidates may have.

5 Tools to Improve Video Interviews

This section will review the best video interviewing platforms that are easy to use, affordable, and reliable.

Zoom

Zoom has become the go-to video chatting service in the past year.

It’s a single solution for video and audio conferencing, messaging, and webinar requirements. The platform is easy to use, which minimizes technical difficulties on the candidate’s end. Plus, considering the popularity, it’s highly likely for all the candidates to have Zoom accounts already.

Skype

Before Zoom, there was Skype.

For years, Skype has been simplifying internet calls. The platform offers HD video and audio calling, along with messaging, screen sharing, call recording, and live subtitles. Already a valuable tool for remote teams, you can use Skype to conduct video interviews painlessly.

Additional features include background blurring and a live code testing environment for software development or engineer interviews.

Google Meet

Businesses already using G Suite prefer Google Meet for its simplicity.

All the candidate needs to join the video interview is a link, which can be easily shared through Google Calendar or Gmail invites. This eliminates the extra hassle of downloading new software and getting access codes.

What’s more, the service has Android and iOS applications, giving participants the flexibility to join interviews from their mobiles.

Jobvite


Recruiters, hiring teams, and candidates love Jobvite because it comes packed with features to make the interview experience as seamless as possible. The fact that it’s easy to use, collaborate with, and facilitates faster decision-making is the icing on the cake.

Typically, you have to integrate your video interview software with a third-party ATS. Jobvite tries to eliminate this requirement.

This software tool is a combination of an ATS and a video interview platform. As a result, you can conduct your interviews faster without worrying about ATS incompatibility.

CISCO Webex Meetings

CISCO Webex Meetings make video interviews effortless.

It allows you to conduct interviews via any device and gives you access to several excellent features like in-meeting private messaging, screen sharing, and recording functionality with automatic transcription. The HD-quality video will make you feel like the candidate is in the same room with you!

Customizing meeting layouts to optimize use is another benefit.

5 Tricks for Holding Effective Video Interviews

Video interviewing offers several benefits that can be incredibly helpful where hiring is concerned—but you have to do it right. Read on as we discuss five tricks to help you get the most out of a video interview.

Dress Appropriately

The way you dress gives the candidate a sense of your company culture and makes the interview feel more in line with an on-site interview. You should always be dressed professionally when you’re about to conduct an interview, regardless of your location.

Showing up in your sweats, unless it’s the typical office attire for your organization, will make the candidate feel that the conversation isn’t really that important to you. So if you have a formal dress code, wear that shirt and tie. You can always change after the interview.

Prepare the Interview Environment

The candidate will assess your company from what they see on their screens. To create a first good impression of your business, make sure you should prep the room—or at least the part they can see.

  • Inform your colleagues (or your family if you’re conducting the meeting from home) when the meeting is going on and where. Ask them to avoid talking on the phone or to each other in the room you’re in.
  • Avoid holding meetings in rooms that have an echo. You can place plants or soft furnishings to absorb sound, which, in turn, will stop the echo from happening.
  • Place your computer or your webcam an arm‘s length away from where you’re seated. If you have a lower desk, use books or a box to place the device at eye level.
  • Don’t forget the lighting! Sit with a lamp in front of you but place it so that it isn’t visible in the camera. Ensure the light doesn’t create strange shadows. Avoid sitting against the sunlight.

Practice Good Body Language

Just because you have a screen between you and the candidate doesn’t mean manners and etiquette are off the table. A staggering 55% of communication is non-verbal, with your words amounting to only 7%. The remaining 38% has conveyed it through the tone of your voice.

Therefore, the way you present yourself is critical in a video interview. Be sure you make eye contact, sit up straight, nod at appropriate times, and smile—a lot.

Raise Consistent Questions

You should ask all your candidates a consistent set of questions, irrespective of the interview format. While there’s no need to reinvent the wheel, the questions should be appropriate considering the job and in line with your candidate’s answers.

This way, even if interruptions happen, you’ll be better prepared to evaluate and compare candidates based on their responses. Using an interview scorecard to remain unbiased in your evaluations could also help.

Have a Backup Plan

Problems can occur no matter how many times you test your video interview software.

If your Internet becomes unstable, interrupting your video and audio, use your backup plan. I highly recommend having an alternative method for conducting the interview. Call or email the candidate to ask them if they would be okay with switching platforms or be willing to talk on the phone.

What to Do Next

Once the interview is over, review your notes and re-watch the recorded interview. Meet with your team to shortlist candidates for the next round of interviews, which is typically an on-site interview unless you’re hiring remotely.

Always follow up with every candidate you interview—even if you choose not to move forward with one.

Here are more Quicksprout guides to help you conduct video interviews more effectively:

JavaFX — Overview with Hands-on

1. Overview

JavaFX is a Java library used to build Rich Internet Applications (RIA). It provides a set of graphics and media packages that enables developers to design, create, test, debug, and deploy rich client applications that operate consistently across diverse platforms.

JavaFX provides a rich graphical user interface. JavaFX has the structure and APIs specifically for animation, 2D and 3D geometry, charts, special effects, color gradients, graphical controls, and easy manipulation of media, including audio, video, and images.

Sharing WinSCP Configurations

You may have experienced the situation that an experienced team member, equipped with a large number of configured WinSCP sites, would like to share this information with a newbie team member (and all future newbies). A simple export & import will not suffice, since the configuration contains personalized authentication data (usernames and passwords, or keyfile locations). And you don’t want to force the newbie to manually copy-and-paste connection data and his own authentication data into a series of new WinSCP sites, as this would be inefficient, tedious, and error-prone.

Solution (Overview)

Here is a quick overview of the solution to this problem. Details will be given in the sections below.

Functors in Functional Programming


1. Overview

In this tutorial, we’ll take a look at Functor type class in Cats. The idea of Functor is “something that can be mapped over”, we’ll see what is actually mapped and how. In functional programming, Functors come into play when we have types or values wrapped inside contexts or containers. We don’t have to know any of the implementation details of those contexts or containers themselves.

2. SBT Dependencies

To start, let’s add the Cats library to our dependencies :

Microservices on AWS: Part 2 [Video]

Introduction 

In this AWSome Pipeline tutorial, I will deploy a Spring Boot microservice to AWS Cloud using the different CI/CD tools provided by AWS. We will be creating different IAM roles needed and then set up the AWS pipeline to continuously deliver software changes to our EC2 instances. I will walk you through different steps involved from uploading your code to GitHub, then check out that using AWS code stage, building using AWS Code Build, and then deploying the generated artifact to your targeted auto-scaling group using AWS Code Deploy. We will be creating a new version of the application and then demo that how the AWS pipeline can deploy those changes to our environment seamlessly. 

Source code can be downloaded from the GitHub repository.

Use MySQL Window Functions to Get More Out of Your Data

MySQL Windows Functions

Window Functions in MySQL

Window functions are an advanced feature offered by MySQL to improve the execution performance of queries. These functions act on a group of rows related to the targeted row called window frame. Unlike a GROUP BY clause, Window functions do not collapse the rows to a single row — preserving the details of each row instead. This new approach to querying data is invaluable in data analytics and business intelligence.

Window Functions vs. Aggregate Functions

Aggregate functions are used to return a single scalar value from a set of rows. Some prominent aggregate functions available in MySQL are SUM, MIN, MAX, AVG, and COUNT. We can use these functions combined with the GROUP BY clause to get an aggregated value.

CSS for Web Vitals

The marketing for Core Web Vitals (CWV) has been a massive success. I guess that’s what happens when the world’s dominant search engine tells people that something’s going to be an SEO factor. Ya know what language can play a huge role in those CWV scores? I’ll wait five minutes for you to think of it. Just kidding, it’s CSS.

Katie Hempenius and Una Kravets:

The way you write your styles and build layouts can have a major impact on Core Web Vitals. This is particularly true for Cumulative Layout Shift (CLS) and Largest Contentful Paint (LCP).

For example…

  • Absolutely positioning things takes them out of flow and prevents layout shifting (but please don’t read that as we should absolute position everything).
  • Don’t load images you don’t have to (e.g. use a CSS gradient instead), which lends a bit of credibility to this.
  • Perfect font fallbacks definitely help layout shifting.

There are a bunch more practical ideas in the article and they’re all good ideas (because good performance is good for lots of reasons), even if the SEO angle isn’t compelling to you.

Direct Link to ArticlePermalink


The post CSS for Web Vitals appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.

App Platform on Digital Ocean

This is new stuff from DO.

App Platform is a hosting product, no surprise there, but it has some features that are Jamstack-inspired in the best possible way, and an additional set of unique and powerful features. Let’s start with some basics:

  • Static sites can be hosted on the free tier
  • Automatic HTTPS
  • Global CDN (Cloudflare is in front, so you’re DDoS safe)
  • Deploy from Git

That’s the stuff that developers like me are loving these days. Take some of the hardest, toil-laden, no-fun aspects of web development and entirely do them for me.

And now the drumroll:

  • This isn’t just for static sites: it’s for PHP, Node, Python, Ruby, Go, Docker Containers, etc.
  • You don’t have to configure and update things, these are boxes ready-to-go for those technologies.
  • You can scale to whatever you need.
  • You don’t pay by the team seat. Unlimited team members. You pay by usage like bandwidth and build time.

Use that link to get $100 in credit over 60 days.

It extremely easy to deploy a static site

You snag it right from GitHub (or GitLab, or Docker Hub), which is great right away, and off you go.

Then we get our first little hint of something compelling right away:

But let’s say we don’t need that immediately, we can go with a free plan and get this out.

The site will build and you can see logs:

And lookie that my static site is LIVE!

Say my site needs to run an actual build process? That, and lots more configuration come in the form of an “App Spec”. This is where I would include those build commands, change Git information, deployment zones, and loads more.

About that database…

Wasn’t that interesting to see the setup steps for this static site suggest adding a database? So many sites need some kind of data store, and it’s often left up to developers to go find some kind of cloud-accessible data storage that will work well with their app. With Digital Ocean App Platform, it can live right alongside your static app.

It’s called a component.

As you can see, it can be, but doesn’t have to be a Database. It could be another type of server! Here I could pop a PostgreSQL DB on there for just $7/month.

If what you need to add is an internal or external service, it will let you add that via another Git repo that you hook up. Oh my what a modern system you now have. A front end and a back end each individually deployable directly via Git itself.

This is for server-side apps as well.

This feels big to me! I get that same kinda easy DX feeling I get with static sites, but with, say, a Python or Ruby on Rails app. Free deployment! Server boxes I don’t have to configure and manage myself!

Seems like a pretty happy-path hosting environment for lots of stuff.

Use that link to get $100 in credit over 60 days.


The post App Platform on Digital Ocean appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.

Working With Lazy Loading and Eager Loading in Entity Framework Core and Entity Developer

Entity Framework is an Object Relational Mapper (ORM) tool from Microsoft that has been an extremely popular from the time it was available. It enables developers to create data-centric applications by programming against a conceptual model rather than the relational model thereby solving the impedance mismatch between the way data is represented in the application and how it is actually stored in the database. While Entity Framework runs on .NET Framework, Entity Framework Core can run on .NET Core environment.

While Entity Framework runs on .NET Framework, Entity Framework Core can run on .NET Core environment.