Wednesday, May 30, 2018

.NET Core 2.1 Released

Good news: Microsoft just announced .NET Core 2.1 SDK. Let's understand what changes.
Photo by Anne Nyg√•rd on Unsplash

I've using the NET Core 2.1.0 RC 1 SDK for a couple of days already because I'm testing some SignalR.Core functionalities available initially for that revision and am very happy to know that the final is here.

Long-term Support

Microsoft also announced that this is a Long-term Support (LTS) version. What does that mean?
  • supported for three years
  • security improvements
  • added platform support 
  • superior performance
  • improved reliability
  • much easier to manage .NET Core and ASP.NET Core versions in project files and with self-contained application publishing.

Features

The most important features IMHO are listed below.

Performance and Reliability Improvements

As previously mentioned, there were significant gains related to performance on this version.

Improved Platform Support

Windows, Mac, Linux and Docker. There's a .net core version for everyone. The list keeps growing!

SignalR.Core

As I mentioned above, yes, the new SignalR.Core is finally available with this release. That's awesome news for those who are using this library and were waiting for that upgrade!

Razor Class Libraries

We can now embbed Razor in class libraries so Razor is used in your backend to build views and pages into reusable class libraries.

.NET Core Tools

This is a very important feature. Existing already in NPM, it basically allows us to install global applications from nuget packages. .NET Core tools run on all .NET Core supported operating system and chip architecture by default, with one set of binaries. Installing and using .NET Core tools is as simple as:
dotnet tool install -g dotnetsay
dotnetsay
The following existing DotNetCliReferenceTool tools have been converted to in-box tools.
  • dotnet watch
  • dotnet dev-certs
  • dotnet user-secrets
  • dotnet sql-cache
  • dotnet ef

Build Performance Improvements

Builds are faster on .Net Core 2.1. Here's a comparison from Microsoft:
.NET Core 2.1 Incremental Build-time performance improvements
Source: https://blogs.msdn.microsoft.com/dotnet/2018/05/30/announcing-net-core-2-1/

Docker Support 

Updated Docker images for .NET Core 2.1 are available at microsoft/dotnet on Docker Hub and contain many improvements and simplifications from Microsoft.

See Also

For more posts about .NET Core, please click here.

Monday, May 28, 2018

A simple introduction to RavenDB

RavenDB may be an excellent alternative for developers looking for a reliable, robust and friendly NoSql database. Read to understand.

In case you never heard of it, RavenDB is a fast, reliable and extensible NoSql database. Being a NoSql database, it has benefits and drawbacks over Sql databases. On this post, let's take a look at how RavenDB behaves with Linux, containers and .NET Core.

If you're interested in more information on why to use a NoSql database, please check this article.

Why RavenDB?

With so many big names in the NoSql market, why even consider RavenDB?

Easy to use

Raven is extremely easy and simple to use, either by developers and non-technical people. In a couple of minutes, non-technical users were able already to interact with the database with no major hiccups.

Multiplatform

RavenDB is multiplatform and can be installed on Linux, Windows, Mac, Docker and even on a Raspberry Pi. Installation is also straight-forward. On Windows and Linux, testing is as simple as downloading the executable, extracting and running the executable. On Docker, a simple docker pull solves.

Raven Studio

Raven Studio is the front-end to interact with RavenDB. It's the app responsible for making the user experience enjoyable for developers and non-developers alike. It’s included with any license, including the free community version.

Multiple Clients

RavenDB client can be accessed using the major programming languages in the market, including C#, Java, Node, Python, Ruby and Go!

Transactional NoSQL

RavenDB is the first non-relational database to achieve ACID across the entire database. Maintain the best of SQL while boosting your capacity to the next level.

Extensive Management Features

You can set up a distributed data cluster in minutes. Replicate your database in real time so you can be everywhere at once, and always available to your users.

Simple API with an embedded ORM

This is especially important to developers. It means easily creating/updating/deleting records, quicker to test and to release, no migration scripts, simple and powerful api. For example, this is how I insert a record in the database:
Example: a very simple insert operation in Raven.

Simple NoSQL Querying

RavenDB has powerful ways to do query including geospacial, faceted, full-text and map-reduce operations. But since most of the time, what you want is very easily available to you via the api and indexes.
Example: a very simple "select * from Category" query in RavenDB.

Extensive Querying Types

Apart from the simplicity shown above, RavenDB brings awesome querying support such as Full text search, Spatial, Facets and a built-in graph api.

Index Support

Indexes in RavenDB are one of the strongest points. Being a NoSql database, it's an intelligent solution to avoiding multiple requests to the database by merging multiple tables. We will also revise this in future posts.

In-Memory Database

RavenDB has an in-memory database that you can use to persist data from your application (and replace SqlLite for example) or, better yet, use in your tests so you have real db operations (in-memory) without the hassle of creating mocks and simulating your tests.

Extensions / Bundles

You can extend the database with bundles and extensions. Some come already built in for us, others can be created through what they call Bundles. It's more of a technical solution but very interesting feature to have available. For example, these are the out of the box bundles that come with a standard RavenDB installation:

Powerful and Extensive API

Apart from (most of the time) simple operations, we have lots of advanced features in the client api to manage everything from tables (collections), records, bulk operations to database indexes, etc.

RavenDB Cloud

Yes, RavenDB is also available as a SAAS on its RavenDB Cloud. Ideally, it serves really well to small teams so that you get a hosted your databases without any need to manage VMs on your favorite cloud provider.

Final Thoughts

In almost 20 years working with software development, I know how difficult it is to manage and evolve databases during the project life cycle. Being agile today requires releasing as fast as possible and complex operations like data migration can have a big impact on your domain. My experience with RavenDB, is that development, patches, migrations and even clustering are greatly simplified.

And because it makes sense to do polyglot persistence, why not use RavenDB, beside your existing Sql instance of a or even side by side with your MongoDB, CouchDB, Redis and Cassandra? So go ahead, install it on your machine (or test its Cloud) and give it a try!

See Also

Monday, May 21, 2018

Seven Databases in Seven Weeks, 2nd Edition

The book is an interesting heads-up on databases being used on different fields throughout the world.
You may or may not have heard about polyglot persistence. The fact is that more and more, software projects are making use of different technologies. And when it comes to the database world, the number of options is immense: it can be relational, document or columnar databases, key-value stores, graph databases, not to mention other cloud infrastructure options like service buses, blobs, storage accounts and queues.

What to use? Where? And how does that affects developers?

Choosing a database is perhaps one of the most important architectural decisions a developer can make. In that regard, I'd like to recommend a very interesting book that addresses some of that discussion: Seven Databases in Seven Weeks, 2nd Edition.

Why you should read this book

Because the book:
  • provides practical and conceptual introductions to Redis, Neo4J, CouchDB, MongoDB, HBase, PostgreSQL, and DynamoDB
  • introduces you to different technologies encouraging you to run your own experiences
  • revises important topics like the CAP Theorem
  • will give you an overview of what’s out there so you can choose the best tool for the job
  • explore some cutting-edge databases available - from a traditional relational database to newer NoSQL approaches
  • and make informed decisions about challenging data storage problems
  • tackle a real-world problem that highlights the concepts and features that make it shine

Conclusion

Whether you're a programmer building the next big thing, a data scientist seeking solutions to thorny problems, or a technology enthusiast venturing into new territory, you will find something to inspire you in this book.

Reference

See Also

Thursday, May 17, 2018

Windows command line reference available

In case you don't know, Windows does have a command line reference. Read to understand where to find it.
Microsoft published a Windows command line reference document that has 5 Mb and has 948 pages. Parameters are explained in detail in the doc and they are essentially the same information that you get when you run the command with the /? option on the command line.

There are also some examples for certain commands that you don't get with the /? option on the command line.

What I like in this format is that, by being a PDF document, I can search for commands or information quickly and you may get what you look for faster than searching online.

It's also a good doc to keep around when working offline.

Download

The document can be downloaded here: https://www.microsoft.com/en-us/download/confirmation.aspx?id=56846

See Also

Monday, May 14, 2018

Linux apps coming to Chromebooks

Excellent news for Chromebook users and Linux enthusiasts! Google announced that Linux apps are coming to Chrome OS.
Google recently announced that Linux apps are coming to Chromebooks! This is fantastic! But before we discuss how important that is for FOSS, Linux and which benefits it'll bring for Chromebooks owners, let's review Chromebooks and its OS, Chrome OS.

Chrome OS

Chrome OS was originally created as a Ubuntu spin off. It then migrated to Gentoo Linux and evolved to use custom Linux kernel. The UI has always been Chrome - the browser - being basically your only desktop app. The other apps initially available used were traditionally web apps (Gmail, YouTube, etc) wrapped inside a chrome window.
A Chromebook currently being sold on Google Store

Android Apps

Due to the limitations and availability of apps, Google worked to bring Android apps to the Chrome OS. While that's huge, you can run most of Android apps but not all. Reports show that the majority of other applications work flawlessly. That's million of apps. As a result, we've seeing a growing popularity of Chromebooks. But those apps lack advanced features for some users so Google decided to move further and integrate Linux apps to Chrome OS.

Linux apps on Chrome OS

In order to run Linux apps on Chrome OS, developers are working on what's called Project Crostini - an extension that will allow Linux VMs to run inside a container on Chrome OS. First spotted on Reddit, it seems it's already available on Chromium developer builds with a preview being quickly available for the Pixel book.

The main objective is to run these VMs run within containers on top of Linux's built-in Kernel-based Virtual Machine (KVM). This has an extra benefit in terms of security as those Linux apps would have be sandboxed within the container (and/or the VM below it) so that restrictions would exist from the guest to the host.

VentureBeat has some interesting notes regarding this project. According to them, Chrome OS director of product management Kan Liu has provided some insights, including:
“We put the Linux app environment within a security sandbox, running inside a virtual machine. We made sure the user experience is seamless to the user. Whether you use a web app, whether you are using an Android app, or whether you are using a Linux app, the window treatment and the way you launch the app from the launcher is the same.”

How it will happen

Still according to VentureBeat, you won’t see the windows from the Linux side; it’s just running within a Chrome OS window. So expect Chrome to wrap those tools as regular windows similarly to how you're used on Windows and MacOS. On the backend, expect some Wine integration.

Quick Start

Another good news is that, according to Google, it's estimated that the backend VM will starts up in a second meaning that running Linux apps will happen very smoothly.

Security

 Apart from running apps containerized within a VM, VentureBeat reports:
“The files are actually inside the VM as well. From a security standpoint, that’s what makes it safer. But you’ll be able to access files from both sides. If you were ever to get malware in the Linux side, for example, it can’t contaminate the rest of Chrome OS.”

Requirements

Some extra requirements include some extra storage space (300MB for Linux and more for the apps) and Linux kernel version 4.4 or higher.

Conclusion

Considering that we already can run most of Android apps and soon, we'll be able to also run native Linux apps on Chrome OS, Chromebooks are definitely becoming a real operating system. The reason why I never invested time on Chromebooks is the lack of productivity tools including the terminal, compilers, source control, a robust text editor, IDEs, package management tools (apt or dnf) and other programming languages. But it will change.

I'm pretty excited about this. Hope this feature becomes stable soon enough to be able to test my favourite tools on a Chromebook.

See Also

Thursday, May 10, 2018

Red Hat Enterprise Linux keeps growing

The Red Hat ecosystem keeps growing. Let's understand how much.
Photo by Agnieszka Boeske on Unsplash

Red Hat recently announced that its Red Hat Enterprise Linux is the Linux operating system leader. While that alone is magnificent, there's more in the original article than it seems.

The fastest growing operating system vendor

The stats below released by IDC in May 2018 show 14.5% increase in 5 year, making RH the fastest growing operating system vendor.
Worldwide Operating Systems and Subsystems CAGR by Vendor, 2012-2017
Source: https://www.redhat.com/en/blog/red-hat-linux-operating-system-leader

Strong Growth in the installation base

A growth in the installation base was also highlighted, making RH now side by side with Apple in OS installation base. That's fantastic!
Worldwide Operating Systems and Subsystems 2017 Share Snapshot
Source: https://www.redhat.com/en/blog/red-hat-linux-operating-system-leader
Still according to IDC,  Red Hat “remains a leading innovator of new Linux operating system technologies, as well as complementary technologies such as middleware, virtualization, and PaaS.”

RHEL for the rest of us

So what about the rest of us developers and small shops that can't afford a RHEL licence? In case you wonder, yes it's possible to run RHEL on the desktop but I'd like to point out two community-driven equivalents available for free: Fedora Linux and CentOS.

CentOS

CentOS is a community-drivem free/libre/open-source RHEL equivalent operating system for servers. CentOS is a fantastic distribution, very stable and supported by a big, dedicated community. CentOS is also used in millions of servers worldwide. Want to know more? Check my reasons to run CentOS.

Fedora

Fedora is one of the most cutting-edge distros out there and incubator for Red Hat Linux. If you want to be part of that innovation and run what will eventually be released on RHEL, then I'd urge you to try out Fedora. Fedora is also available on a multitude of options: KDE, XFCE, IoT, containers and more, much more. In case you're interested, learn why I use Fedora.

Conclusion

RHEL is a strong and leading Linux operating system for servers on enterprise software. That fact that it keeps growing worldwide means that, learning and using it is a fantastic opportunity from developers and sysadmins. In that end, both CentOS and Fedora are excellent alternatives and are available for free.

Read Next

See Also

Monday, May 7, 2018

Microsoft Build 2018

Microsoft’s Build event starts today, May 7th, 2018. Worth watching for .NET developers.

The event is expected to reveal Microsoft’s focuses, focusing mainly on AI and Cloud.

This event is all about developers so it's highly recommended for everyone using Microsoft technologies and those who want to be update on latest developments, to watch.

Event Details

Microsoft Build 2018
Date: May 7th, 2018 Time: 8:30am PT, 11:30am ET
Event Page: https://developer.microsoft.com/en-us/events/build

Watch it live

You can view it live on the url above or directly from the Youtube video below.



About the Author

Bruno Hildenbrand      
Principal Architect, HildenCo Solutions.