Was 2017 the year that every product under the sun was marketed as being cognitive, having machine learning, or being artificially intelligent? Well, yes. But don’t hate all of them. In many cases, machine learning actually did improve the functionality of products, sometimes in surprising ways.

Our reviewers didn’t give any prizes for incorporating AI, but did pick out the most prominent tools for building and training models. These include the deep learning frameworks and , the automated model-building package , and the solid machine learning toolbox .

The MLlib portion of fits into this group as well, as does the 25-year-old(!) , of which our reviewer says, “No matter what the machine learning problem, there is likely a solution in CPAN, the comprehensive repository for R code, and in all likelihood it was written by an expert in the domain.”

2017 was also the year when you could pick a database without making huge compromises. Do you need SQL, geographic distribution, horizontal scalability, and strong consistency? Both and have all of that. Do you need a distributed NoSQL database with a choice of APIs and consistency models? That would be Microsoft’s .

to query them, and you might use as a driver if your client is a Node.js application. Taking a more graph-oriented view of data, a GraphQL query looks something like a JSON structure with the data left out.

As for graph database servers, consider , which offers highly available clusters, ACID transactions, and causal consistency. Are you looking for an in-memory GPU-based SQL database that can update geospatial displays of billions of locations in milliseconds? is what you need.

Two up-and-coming programming languages made the cut, for completely different domains. looks like a streamlined version of object-oriented Java, but it is also a full-blown functional programming language, and most importantly eliminates the danger of null pointer references and eases the handling of null values. , on the other hand, offers memory safety in an alternative to C and C++ that is designed for bare-metal and systems-level programming.

Speaking of safety, we also salute two security products—one for making it easier for developers to build secure applications, the other for extending security defenses to modern application environments. notify you when GitHub detects a vulnerability in one of your GitHub project dependencies, and suggest known fixes from the GitHub community. protects against threats to your cloud- or container-based web applications and APIs. 

, either by itself, or as a service in the AWS, Azure, or Google clouds.  goes beyond monitoring and logging to give your distributed systems observability.

Recently, the heavyweight Angular and React frameworks have dominated the discussion of JavaScript web applications. There’s a simpler framework that is gaining mindshare, however: . Vue.js still builds a virtual DOM, but it doesn’t make you learn non-standard syntax or install a specialized tool chain just to deploy a site.

Microsoft’s relationship with Linux has been troubled over the years, to say the least. For example, in 2001 Steve Ballmer called Linux a “cancer.” The need for Linux in the Azure cloud changed all that, and the allows you to run a for-real Ubuntu or Suse Bash shell in Windows 10, allowing you to install and run legitimate Linux binary apps from the standard repositories, including the Azure Bash command line.

Read about all of these winning products, and many more, in our tour of .