Technologies to Follow in 2017
Introduction
A lot is happening and it’s difficult to keep track of everything. Based on my work and on what I see over the Internet, I decided to write a post about the technologies – tools, languages, servers, operating systems, etc – that I find more interesting and promising. I know, some of these will be controversial, others are not exactly new, I am even mixing totally different things together, but, hey, it’s my opinion - feel free to share your objections here!
I am not going to cover the myriad of JavaScript frameworks, because they’re just too many. I will only talk about what I know. For that same reason, I’m not talking about Akka, Go, Scala, Python, Ruby, Erlang, etc, because, honestly, I never used them. Also, I don’t cover Java, although Kafka is written in Java, because I haven’t used Java in anger for more than 10 years. I read that it’s having some problems, with some key people leaving Oracle, persisting security problems and the delaying of releases, but I’m sure Java is here to stay. Others will be more fit to talk about it.
.NET Core
.NET Core is Microsoft’s next version .NET framework, only this time totally modular, open source and multi-platform. Runs on Linux and MacOS, not just Windows. Still doesn’t have all the features of classic .NET, but it will get there: next version (2.0) will more than double the supported APIs. Right now, it’s perfect for writing .NET MVC apps and web APIs that need to run in other operating systems, including inside Docker containers. Get it from https://github.com/dotnet/core.
Node.js
A JavaScript runtime for the desktop instead of the browser. Uses an event-driven, asynchronous I/O model for high performance and scalability. Has probably the largest ecosystem of open source libraries in the world – NPM. Free and open source, with new features continuously being released. Currently uses Google’s V8 engine, but Microsoft submitted a patch to allow it to run Chakra, it’s JavaScript engine! Exciting times! Its site is https://nodejs.org.
Docker
You favorite container technology! Now supported in both Amazon Web Services and Azure, and with native support in Windows Server 2016. This is a must have for highly scalable applications. Free but it’s possible to get a paid repository online. A lot going on around it, the only problem is that things tend to change in non-retro-compatible ways, still need maturing. See more at http://docker.com.
Elasticsearch
A distributed and open source search engine based on Lucene. A blazing fast NoSQL database with replication capabilities, it is the most widely known component of the ELK stack, together with Kibana (for reporting and visualizations), Logstash (for data import) and Beats (for data shipping). Even Azure Search uses it behind the covers. Free but some tools are paid. Get it from http://elastic.co.
ECMAScript 2015
The next generation JavaScript, also known as ECMAScript 6. Heavily influenced by TypeScript, it offers a number of features from compiled languages, such as lambda functions, classes, type safety, etc. Before it’s available everywhere, people are using Babel.js to compile it to classic JavaScript. Google Chrome’s V8 engine already supports a great deal of it, as does Firefox. The specification is available here: http://www.ecma-international.org/ecma-262/6.0/.
HTML5
Is there any other, I hear you ask? Well, except if you need to support that old two-letter browser who had an infamous version 8, not really. Together with HTML 5 came a wealth of APIs that now allow us to have near-desktop quality apps on the web, and in some mobile browsers too. Latest standard is 5 but 5.1 is due to come out this year. Interestingly, HTML5 is more and more not just about web applications but also being used for desktop ones: for example, the Spotify desktop client is an HTML5 app. The specification is available at https://www.w3.org/TR/html5.
Kafka
A high throughput, low-latency open source message broker from the Apache foundation. Can stream data in real-time for massive simultaneous clients and has bindings for several languages. Similar to a distributed transaction log with exactly once semantics. More info here: https://kafka.apache.org.
TypeScript
A superset of JavaScript offering type safety and class-based object-oriented features. Nice wrappers around promises using similar syntax to C#’s async/await. It is compiled to JavaScript, so it can run anywhere JavaScript can. Free license. The official site is https://www.typescriptlang.org.
MongoDB
An open source NoSQL document database designed for high performance and with interesting clustering features. Mappings for all common languages, including scripting ones. With it you get JSON storage, indexes and automatic expiration. With free and commercial licenses. See more at http://www.mongodb.com.
Git
A free and open source distributed source control from the author of Linux. Now being used everywhere, even Microsoft is using it instead of their own TFS. Not an easy beast to master, I may add. Also worth mentioning GitFlow, a proposed workflow for branching and release management. The official site is https://git-scm.com.
Nginx
A high performance web server, HTTP cache and reverse proxy server for several TCP protocols. Can serve .NET and any other language, probably best used as a reverse proxy, particularly in the case of .NET Core. Runs on Windows and several UNIX flavors. It is free to use. Available from https://www.nginx.com.
Octopus Deploy
An automated deployment and release management tool for .NET applications. Latest versions can deploy both web apps as well as Windows services. Plays nicely with Continuous Integration and build tools such as Jenkins and TeamCity. Both free and commercial licenses. The web site is https://octopus.com.
Azure
Microsoft’s Cloud offering, the competitor of Amazon Web Services. Loaded with powerful services and features, which include amazing machine learning services, containerization as a service, queuing, and anything that can be expected from a Cloud service. Possible to get a time-limited trial for free. The official site is https://azure.microsoft.com.
Amazon Web Services
One of the two major players in the Cloud market, the other being Azure. Still has the biggest market share and offers a number of interesting features. Leaning slightly more towards Java and JavaScript than to .NET. Anyone can get a free account, as long as a credit card is supplied. See more at https://aws.amazon.com.
Linux
The free and open source operating system that just a few years ago Microsoft compared to a virus! Based on UNIX, now not just for geeks, it is everywhere, especially with the arriving of Docker. Several distributions available, to match anyone’s preferences, some free and some commercial. Windows 10 now even runs bash natively! See more at https://kernel.org.
Visual Studio Code
A powerful and extensible yet lightweight IDE from Microsoft based on GitHub’s Electron, which can run in a number of platforms, from Windows and Linux to MacOS. Includes support for a number of languages, Git integration, debugging capabilities – which make it stand from others such as Sublime or Atom - and an extension mechanism. Hey, it’s free! Get it from http://code.visualstudio.com.
Xamarin
A cross-platform implementation of .NET, for Windows Phone, Android and iOS. Before .NET Core came along – in fact, even after that – it is the preferred tool for creating applications that need to target multiple platforms. Now offered for free by Microsoft. but the Enterprise version will require a Visual Studio paid license. Microsoft promised to make it open source. Official site is https://www.xamarin.com.
Google Analytics
A web analytics service offered for free by Google, although paid subscriptions also exist. Can be used to track not only traffic but also custom events, and also in mobile apps. It’s unbelievable the amount of information that one can get out of it. See it in https://analytics.google.com.
SQL Server 2016
In-memory tables, JSON support, Query Store, integrated R, row and column-level security, etc, make this one of the most interesting versions of SQL Server ever. Available for free with limitations as Express edition, and as a paid license. More info from http://microsoft.com/sqlserver.
Let’s Encrypt
Free SSL certificates for the masses! No need to pay for a certificate, now you can get any number for free. Easily installable in any server (even IIS), but expires every 90 days. Get yours from https://letsencrypt.org.
TensorFlow
TensorFlow is Google’s second generation open source library for machine intelligence. It uses data flow graphs to represent mathematical operations and is the core of several Google products, such as Gmail, Google Photos and others. It offers Python and C++ bindings and recently it compiles on Windows as well as Linux and Mac OSX. Get it from https://github.com/tensorflow/tensorflow.
GitLab
GitLab is a free (with an enterprise license too) repository manager built on Git. It is fast moving with a plethora of very useful features. You can install it on premises or run it in the cloud. Offers integration with LDAP servers for authentication, offers a pretty decent Continuous Integration feature, plus a lot of other cool stuff. Check it out at https://about.gitlab.com.
Redis
A distributed cache with open source implementations in Linux and Windows. Currently, probably the most used one. Offered by both Azure and AWS. Not just BLOB cache, offers interesting structures. Learn about it at https://redis.io.
Conclusion
So, what are your thoughts – am I missing something? Do you agree or disagree with my choices? I’d love to hear from you!