Visual Studio Code will now ship with Anaconda

Microsoft has announced that Visual Studio Code will ship as part of the popular Python data science platform Anaconda. Microsoft first announced plans to bring Python to Azure Machine Learning, Visual Studio and SQL Server in September of last year.

According to Microsoft, “Visual Studio Code can easily be installed at the same time as Anaconda, providing a great editing and debugging experience for Python users, with special features tailor-made for Anaconda users.”

Microsoft has previously made investments in the Python community. It has already released a Python extension for VS Code and provides support for Python in Azure Machine Learning, SQL Server, and Azure Notebooks. According to Microsoft, the Microsoft Python Extension for Visual Studio Code is the most downloaded extension in the VS Code marketplace.

In addition, Microsoft created a team to support its Python extension, and will be extending that support for Anaconda environments as well.

According to the Anaconda team, VS Code is a good IDE choice for its users on Windows, macOS and Linux because of its debugging, code completion, and Git integration features. It also offers a number of extensions that developers can tailor to their specific needs.

“Anaconda, Inc. is excited to be able to make installation of Microsoft Visual Studio Code and the Python Extension for Visual Studio Code a more seamless experience for our Anaconda users,” Crystal Soja, product manager for the Anaconda Distribution and Anaconda Cloud, wrote in a post.

5 Reasons Why We switched from Python To Go

Python is awesome! Especially Python 3 with async functionality. But really Go is not giving any chances to survive in enterprise world…

If you got the idea of this quote, then you probably tried or just looked around Go programming language. Which is I think easiest programming language that can fit in any kind of application development. Yes! you read that right, for me Go is easier to learn than even JavaScript. I think this is the main reason why Go language become so match popular within a few years.

So What We Had Before Using Go? mainly dashboard and API based web application with some analytical stuff. Here is our technical stack.

  • React.js for Dashboard Frontend
  • Django Python for Dashboard Backend + Authentication service
  • Node.js for API Service
  • PostgreSQL for Database and Cassandra for Logging
  • Custom written Container Registry with Rust Language

As you can see the overall infrastructure is fully micro-service based and most of the logic completely separated, even with different technologies.

That’s the main reason why we started thinking about merging API Service and Backend into single project because they have a lot of things that are similar but codebase is duplicated over multiple programming languages and technologies. But it turns out that we need to work a lot to customize Django’s API services, especially with custom JSON responses.

Why Go?


As I told earlier Go Language is the most easiest languages that I’ve ever seen and used. But it was only the first attraction for me.

Here is the main 5 reasons why we choose Go over Python Django

#1 It Compiles Into Single Binary

Golang built as a compiled language and Google developers did great job with it. Using static linking it actually combining all dependency libraries and modules into one single binary file based on OS type and architecture. Which means if you are compiling your backend application on your laptop with Linux X86 CPU you can just upload compiled binary into server and it will work, without installing any dependencies there!

#2 Static Type System

Type system is really important for large scale applications. Python is great and fun language but sometimes you are just getting unusual exceptions because trying to use variable as an integer but it turning out that it’s a string.

# Django will crash process because of this
def some_view(request):
    user_id = request.POST.get('id', 0)
    # If this post request has "id" parameter then
    # user_id would be a string, 
    # but you really thinking it is integer

Go will let you know about this issue during compile time as a compiler error. This is where you winning time for this kind of stupid issues.

#3 Performance!!

This could be surprising but in most of the application cases Go is faster than Python (2 and 3). Here is the results of Benchmarking Game, which are unfair, it depends on application type and usecase.

For our case Go performed better because of his concurrency model and CPU scalability. Whenever we need to process some internal request we are doing it with separate Goroutine, which are 10x cheaper in resources than Python Threads. So we saved a lot of resources (Memory, CPU) because of the built in language features.

#4 You Don’t Need Web Framework For Go

This is the most awesome thing about programming language. Go language creators and the community have built in so many tools natively supported by language core, that in most of the cases you really don’t need any 3rd party library. For example it has http, json, html templating built in language natively and you can build very complex API services without even thinking about finding library on Github!

But of course there is a lot of libraries and frameworks built for Go and making web applications with Go, but I’ll recommend build your web application or API service without any 3rd party library, because in most cases they are not making your life easier than using native packages.

#5 Great IDE support and debugging

IDE support is one of the most important things when you are trying to switch your programming language. Comfortable IDE in average can save up to 80% of your coding time. I found Go Plugin For JetBrains IDEA which has support also for (Webstorm, PHPStorm, etc…). That plugin is giving everything that you need for project development with the power of JetBrains IDEA you can really boost your development.

Based on our code base statistics, after rewriting all projects to Go we got 64% less code than we had earlier.

You really don’t need to debug code which doesn’t exists. Less code, less troubles!


Go gave us huge flexibility, single language for all usecases and for all of them it working very very well. We got about 30% more performance on our Backend and API services. And now we can handle logging real time, transfer it to database and make a streaming with Websocket from single or multiple services! This is awesome outcome from Go language features.

Don’t forget to “Recommend” this post and share your thoughts about this.

The modern digital enterprise collects data on an unprecedented scale. Andrew Ng, currently at startup, formerly chief scientist at Chinese internet giant Baidu and co-founder of education startup Coursera, says, like electricity 100 years ago, “AI will change pretty much every major industry.” Machine Learning (ML) is a popular application of AI that refers to the use of algorithms that iteratively learn from data. ML, at its best, allows companies to find hidden insights in data without explicitly programming where to look.

Applications built based on ML are proliferating quickly. The list of well-known uses is long and growing every day. Apple’s Siri, Amazon’s recommendation engine, and IBM’s Watson are just a few prominent examples. All of these applications sift through incredible amounts of data and provide insights mapped to users’ needs.

Why is ML exploding in popularity? It is because the foundational technology in ML is openly available and accessible to organizations without specialized skill sets. Open source provides key technologies that make ML easy to learn, integrate and deploy into existing applications. This has lowered the barrier to entry and quickly opened ML to a much larger audience.

In the past two years, there has been an explosion of projects and development tools. The vast majority of consequential ones are open source. TensorFlow, just one key example, is a powerful system for building and training neural networks to detect and decipher patterns and correlations, similar to human learning and reasoning. It was open-sourced by Google at the end of 2015.

Main Languages for ML – Open Source Dominates

Open source programming languages are extremely popular in ML due to widespread adoption, supportive communities, and advantages for quick prototyping and testing.

For application languages, Python has a clear lead with interfaces and robust tools for almost all ML packages. Python has the added benefit of practically ubiquitous popularity. It is easy to integrate with applications and provides a wide ecosystem of libraries for web development, microservices, games, UI, and more.

Beyond Python, other open-source languages used in ML include R, Octave, and Go, with more coming along. Some of these, like R and Octave, are statistical languages that have a lot of the tools for working with data analysis and working within a sandbox. Go, developed and backed by Google, is new and is an excellent server and systems language with a growing library of data science tools. Its advantages include compiled code and speed. Its adoption rates are increasing dramatically.

Python Tools and Libraries for ML – An Introduction

The amazing strength of open source is in the proliferation of powerful tools and libraries that get you up and running quickly. At the core of the Python numerical/scientific computing ecosystem are NumPy and SciPy. NumPy and SciPy are foundational libraries on top of which many other ML and data science packages are built. NumPy provides support for numerical programming in Python. NumPy has been in development since 2006 and just received US$645,000 in funding this summer.

SciKit-Learn, with 20k stars and 10.7k forks, provides simple and efficient tools for data mining and data analysis. It is accessible to everybody, and reusable in various contexts. Built on NumPy, SciPy, and matplotlib, SciKit-Learn is very actively maintained and supports a wide variety of the most common algorithms including Classification, Regression, Clustering, Dimensionality Reduction, Model Selection, and Preprocessing. This is open source that is immediately ready for commercial implementation.

Keras is a Python Deep Learning library that allows for easy and fast prototyping and does not need significant ML expertise. It has been developed with a focus on enabling fast experimentation and being able to go from idea to result with the least possible delay. Keras can use TensorFlow, Microsoft Cognitive Toolkit (CNTK) or Theano as its backend, and you can swap between the three. Keras has 17.7k stars and 6.3k forks. Keras supports both convolutional networks and recurrent networks, as well as combinations of the two, and runs seamlessly on CPU and GPU.

TensorFlow is Google’s library for ML, which expresses calculations as a computation graph. With 64k stars and 31k forks, it is possibly one of the most popular projects on all GitHub and is becoming the standard intermediate format for many ML projects. Python is the recommended language by Google, though there are other language bindings.

These three superstar foundational ML tools are all open source and represent just a taste of the many important applications available to companies building ML strategies.

The Importance of ML Open Source Communities

Open source is built by communities that connect developers, users and enthusiasts in a common endeavor. Developers get useful examples and a feeling that others are extending the same topics. Communities provide examples, support and motivation that proprietary tools often lack. This also lowers the barrier to entry. Plus, many active ML communities are backed by large players like Google, Microsoft, Apple, Amazon, Apache and more.

SQL Server 2017: What’s new, what’s missing on Linux and what’s next?

Microsoft’s general manager talks to Reg about cross-platform SQL Server

Ignite “It’s a big milestone for us as a company,” general manager Rohan Kumar told us, referring to the release of SQL Server on Linux, “the biggest server product from Microsoft”, announced here at the Ignite event in Orlando.

SQL Server 2017 is being released simultaneously for Windows and various flavours of Linux: Red Hat Enterprise Linux 7.3, SUSE Linux Enterprise Server 12, Ubuntu and Docker. 3.25GB or more of RAM is required. The official Docker image is based on Ubuntu 16.04.

Microsoft’s porting effort is based on a compatibility layer called SQLPAL (Platform Abstraction Layer). This enables the subset of Windows libraries used by SQL Server to run on Linux. Even on Windows, SQL Server does its own memory and thread management via a piece called SOS (SQL Operating System). In SQL Server 2017, SOS becomes part of SQLPAL so that SOS calls native Linux APIs directly.


Apache JMeter updated to version 3.3, mix and match cloud services with Manifold and more

The performance of SQL Server on Linux vs Windows is “basically the same”, according to the in-depth session on the subject at Ignite. However, not everything has been ported. There are no Reporting Services or Analysis Services, nor Machine Learning Services (formerly R Services).

Replication is not supported, other than in the context of high availability, nor is Stretch DB, for hybrid local/Azure database storage. File Table, which exposes a SQL Server table as if it were part of the file system, does not work on Linux. Management tools remain for the most part Windows only, though command-line tools work.

What about other distros? “For the most part the core of the OS is very similar,” said Kumar. “If there’s enough demand for a particular distro, I’m very open to that.”

Is Microsoft betting that any revenue lost from Windows Server licences will be more than made up by new sales? “A lot of customers like Windows Server and we don’t believe they are going to move. But there was a section of the market where Windows was not an option. We are going to go aggressively, with the value of SQL Server and the price point compared to, for example, Oracle.”

Container support is a key feature. Windows Containers are in their infancy and the ability to deploy the SQL Server database engine in a Linux container extends its reach.

Microsoft also decided to offer the paid editions on a trust basis, without needing product keys or activation. Customers “don’t want friction where they have to enter some key. We want this to feel as natural as possible,” said Kumar.

Cross-platform is the big new feature in SQL Server 2017, to the extent that the other new features seem minor. Graph query support is new, as is Python in Machine Learning Services, and Adaptive Query Processing and Automatic Tuning for better query optimization.

Kumar told us Graph support was already popular in Azure SQL, the cloud version of SQL Server, where the feature already exists. “That tells you there is a lot of demand.”

Python support is also important. “Python is the standard for binding to deep learning libraries, like TensorFlow from Google or Cognitive Toolkit from Microsoft,” said Kumar. “Those libraries are optimized to run on GPUs. So we’ve made it easy to create native AI apps that work on data in SQL, without moving it out.”

Nevertheless, SQL Server 2017, which comes only 15 months after the release of SQL Server 2016, is less rich than usual in terms of new features, cross-platform aside. Kumar said Microsoft is considering a faster release cycle.

“In the past, we had this notion of every two to four years. Should we have more frequent releases? Innovation comes faster for you. We also have this notion of cloud-first innovation. The features we have talked about in SQL Server 2017 have been available in Azure SQL for a long time. We have this great feedback loop in the cloud. We haven’t closed on a decision yet, but the intention is on the side of shipping more often.”

Which Programming Language Should I Learn To Get A Job At Google, Facebook, or Amazon?

The choice of programming language acts as a big factor for a novice in the world of programming. If one stumbles upon a language whose syntax is too complex, one would definitely reconsider learning it. But, what if you’ve crossed that entry barrier and you’re looking to make a career and land a job at heavyweights like Google, Facebook, or Amazon?

You might have come across the articles that tell which programming languages are used at big companies like Google, Facebook, etc. The choice of those companies doesn’t necessarily reflect their needs while hiring a candidate. There are few chances that they’d be interested to interview someone who is expert in a single programming language.

Similar views were also expressed by Justin Mattson, Senior Software Engineer, Fuschia at Google. He answered a user’s query on Quora (via Inc.).

In his answer, Mattson says that if a company is hung up on the fact that you know a language X, but not language Y, you shouldn’t be interested in working there. ” Languages are a tool, like a saw. Whether the saw is manual, table or laser is less relevant than understanding the basic principles of wood and how cutting it happens,” he writes.

There are chances that a person is expert in a popular programming language, but that doesn’t make him/her a good engineer. Different programming languages teach us different things–C and C++ teach you what’s happening with memory and other low-level operations and Java, Ruby, etc., test your design choices. So, it’s important that you learn more languages.

“Don’t learn just one, learn at least two, hopefully, three. This will give you a better sense of what feature are often common to most languages and what things differ,” Mattson adds.

But, what about expertise in a single programming language?


Is having complete command over one language completely irrelevant? Answering this question, Mattson says that one must become an expert in the language one uses, instead of focusing on what a company wants. “If you say you’re an expert in Python and then can’t use it properly in the interview, that is a problem,” he adds.

In the nutshell, if your fundamentals and design choices are strong, the programming language selection isn’t that important. In such companies, you’ll need to deal with multiple languages and pick up the new one as needed.

Introducing Atom-IDE

GitHub, in collaboration with Facebook, are pleased to announce the launch of Atom-IDE – a set of optional packages to bring IDE-like functionality to Atom.

The start of this journey includes smarter context-aware auto-completion as well as a host of code navigation features such as an outline view, go to definition, find all references as well as other useful functions such as hover-to-reveal information, errors and warnings (diagnostics) and document formatting.

Our initial release includes packages for TypeScript, Flow, JavaScript, Java, C# and PHP that utilize the power of language servers to provide deep syntactical analysis of your code and projects. The language server protocol is being adopted by a number of organizations including Microsoft, Eclipse, Sourcegraph, Palantir, Red Hat, Facebook and now GitHub too!

Get started


We strongly recommended you use Atom Beta 1.21 as it includes the necessary file monitoring and process control to ensure the underlying language servers are running properly.

You’ll need to install at least two packages – the user interface for Atom IDE and a package that support the language you wish to use:

  1. Bring up Atom’s Install Packages dialog (Settings View: Install Packages and Themes)
  2. Search for and install the atom-ide-ui package to bring in the IDE user interface
  3. Install the IDE language support you need (e.g. ide-typescript) – a summary of the ones available at launch include:

TypeScript & JavaScript (ide-typescript)


The ide-typescript package takes advantage of the Microsoft TypeScript server wrapped up in a language server protocol thanks to the work of the team at SourceGraph. While targeted at TypeScript it also works great with JavaScript providing you with autocompletion, document outlines, diagnostics and errors, etc.

Flow (ide-flowtype)

Our good friends over at Facebook have published ide-flowtype to bring the power of the Flow type annotation system to Atom.

C# (ide-csharp)

One of the earliest examples of a language server was OmniSharp for the C# language. By taking advantage of the node-omnisharp package we are able to bring many IDE-like features into Atom for C# via ide-csharp.

Java (ide-java)

The Eclipse foundation and Red Hat have been a big proponent of language servers and the Java package shows! You will need a Java 8 runtime installed to get going but then can enjoy much richer editor facilities. Check out ide-java.

PHP (ide-php)

The ide-php utilizes a PHP language server by FelixFBecker to provide support for the PHP scripting language. (Requires the PHP 7 runtime installed.)

Using Atom-IDE

Each of the IDE packages expose a selection of functionality that is dependent on the underlying language server and is activated when you open files it supports. (Some take a few seconds to start-up and others like ide-java and ide-php will take a short while on first open to download the language server itself.)

Here’s a quick summary of how these features are exposed within Atom IDE:


Autocomplete is enabled in all the ide packages we are shipping today. Start typing to get improved results. Some providers may require you to manually trigger autocompletion by pressing CtrlSpace for performance reasons.


You can see diagnostics by clicking the red exclamation mark and yellow warning triangle at the bottom left of your Atom window. This will open the new Diagnostics pane that shows you the errors and warnings and allow you to click them to jump right to that location in the code. You will also see indicators to the left of line numbers in the editor itself.

Find all references

Position the text cursor in the class or variable you are interested in then activate Find all references either from the right-mouse button menu or Find References: Activate from the command palette.

Some providers allow you to reformat the document. Simply select Code Format: Format Code from the command palette.


Go to definition


Ctrl click on a class or variable reference to be taken directly to where it is defined within your project.



Hover the mouse pointer over a type or other supported object and you can see some additional information relating to it.

Outline view


Many providers let you see a tree-based outline view of the current document which you can search and then click to go right to that area of code. You can toggle the new Outline View from the View menu or the Outline View: Toggle command.

Reference highlighting


Some providers let you see immediate references to the variable or object you are working on. Positioning your text cursor within that variable can highlight other references instantly.

Future plans


This is just the start of our journey. With the help of our community, we plan to expand the number of languages that Atom-IDE can support and make it possible for you to run and edit applications, making Atom-IDE a true IDE.

We hope to see future language support for the great languages out there including Rust, Go, Python, etc.

If a language server exists for your favorite language it is incredibly easy to create your own Atom-IDE package that takes advantage of it by using our atom-languageclient npm library that provides common automatic wire-up of the major features as well as helper tools such as downloading support files and conversions.


Java, JavaScript, C#? No, Python is the fastest growing programming language

Python is now the fastest-growing major programming language, according to Stack Overflow.


Already highly popular, Python could also be the fastest-growing major programming language, according to Stack Overflow, a site that helps developers solve coding questions.

The company estimates Python’s growing popularity based on the percentage of visits to pages containing questions with a Python tag.

This method should provide a reasonable indicator of trends in programming languages since the site attracts about 40 million visitors a month, of which an estimated 16.8 million visitors are professional developers and university-level students.

In June for the first time, visits to Python-tagged questions edged past Java and JavaScript, which historically have had the highest share of visits from users in high-income nations, such as the US, UK, and Germany.

Other languages that Stack Overflow considers major include C#, PHP, and C++, but not Apple’s Swift, Google’s Go, and Microsoft’s TypeScript.

“We make the case that Python has a solid claim to being the fastest-growing major programming language,” said Stack Overflow data scientist David Robinson.

Python has become the most visited tag in the US and UK, and is in the top two in most other high-income nations, which include Canada, countries in Western Europe, and Australia and New Zealand.

The popularity of languages is influenced by factors such as education and wealth. Since Java is widely taught in undergraduate classes, its traffic rises in fall and spring and declines in summer.

Among countries not considered wealthy, Python is the eighth most-visited tag. There has also been more interest in R from high-income nations than poorer nations.

This pattern may be due to Python’s and R’s use in science and academic research, which generally form a larger part of wealthier nations’ economy than less developed nations, Robinson has previously suggested.

However, even in non-wealthy nations, Python is the fastest-growing major language and is actually growing faster year on year than in wealthy countries.

Robinson predicts that traffic to Python-tagged questions will continue to grow next year while traffic to JavaScript and Java will remain static.

Other fast-growing but less-popular languages include Microsoft’s TypeScript, Apple’s Swift, Rust, and the Google-developed Go. However Python stands out as an already popular language that is also fast growing.

“Python is an unusual case for being both one of the most visited tags on Stack Overflow and one of the fastest-growing ones. Incidentally, it is also accelerating. Its year-over-year growth has become faster each year since 2013,” writes Robinson.

Python also ranked highly in Stack Overflow’s 2017 developer survey, which found it was the fifth most popular language behind JavaScript, SQL, Java, and C#. It was also the top language respondents wanted to learn.

However, IEEE Spectrum earlier this year ranked Python as the top language, ahead of C, Java, C++, C#, R, JavaScript PHP, Google’s Go, and Apple’s Swift.



NGINX releases application platform with new application server, centralized management tools

NGINX is transforming its offerings into a one-stop application development and delivery platform, so teams can build or modernize applications with a collection of DevOps tools and best practices.

Today, NGINX launched its new NGINX Application Platform, a suite of products which together, form a solution made up of application delivery, an application server, and policy-driven monitoring and management.

“We work with organizations who are often looking to move from a physical to a cloud data center or they are looking to move from a monolithic to a microservices approach for their applications, and they use NGINX to ensure that the lights never go out,” said Owen Garrett, head of products at NGINX. “We looked at the challenges they’re facing and there is much more we can do to help enterprises who are looking to run across different types of environments and use different application architectures.”

The platform includes NGINX Plus, a combined load balancer, content cache and web server. NGINX Plus extends open source NGINX, and the software-based application delivery controller for the web is now on its 13th release, according to a company announcement today. The platform also includes NGINX Controller, a centralized management and monitoring platform for NGINX Plus. An enterprise will be able to use NGINX Controller to define how they want their application to be delivered, what load balancing policies they want, what SLAs they want their application to meet, and it will be responsible for pushing those policies up to NGINX so they take effect, said Garrett.

Another part of the company’s announcement is NGINX Unit, a server for modern applications. It’s a “new building block” for applications, it’s lightweight, it supports a wide range of application languages like PHP, Python, and Go, and it will implement internal networking, according to Garrett.

It’s also suited for large microservice applications, and it will handle the communication between individual instances of the application in what’s known as a service mesh, which is highly dependent on the strength of its proxy, according to Gus Robertson, CEO of NGINX, in a statement.

NGINX Ingress Controller for Kubernetes
In addition to the new application server and central management tools, NGINX added the ability to use NGINX Plus as a Kubernetes Ingress Controller. As interest in containers and specifically, Kubernetes, grows in the enterprise, teams need to find a platform to embrace these new technologies and help speed up cloud native application development, according to the company announcement.

“In today’s digital environment, it’s critical to deliver feature-rich applications that can quickly respond to changing business requirements,” said Ashesh Badani, vice president and general manager, OpenShift, at Red Hat. “Containers and Kubernetes increasingly serve as the basis of modern and agile apps and Red Hat OpenShift Container Platform provides an innovative platform to help embrace these technologies and drive digital transformation.”

NGINX is based on the open source NGINX Ingress Controller for Kubernetes, and it gives organizations the ability to deploy applications within Kubernetes and Red Hat OpenShift Container Platform anywhere across a cluster. Also, with NGINX Plus, OpenShift customers can have access to a commercial Ingress controller for traffic management and load balancing of services running in OpenShift, added Badani.

I may be one of the last people you would expect to write an essay criticizing JavaScript, but here we are.

Two of my primary areas of professional interest are JavaScript and “programming in the large.” I gave a presentation back in 2013 at mloc.js where I argued that static typing is an essential feature when picking a language for a large software project. For this reason, among others, I historically limited my use of Python to small projects with no more than a handful of files.

Recently, I needed to build a command-line tool for work that could speak Thrift. I have been enjoying the Nuclide/Flow/Babel/ESLint toolchain a lot recently, so my first instinct was to use JavaScript for this new project, as well. However, it quickly became clear that if I went that route, I would have to spend a lot of time up front on getting the Thrift bindings to work properly. I couldn’t convince myself that my personal preference for JavaScript would justify such an investment, so I decided to take a look at Python.

I was vaguely aware that there was an effort to add support for static typing in Python, so I Googled to find out what the state of the art was. It turns out that it is a tool named Mypy, and it provides gradual typing, much like Flow does for JavaScript or Hack does for PHP. Fortunately, Mypy is more like Hack+HHVM than it is like Flow in that a Python 3 runtime accepts the type annotations natively whereas Flow type annotations must be stripped by a separate tool before passing the code to a JavaScript runtime. (To use Mypy in Python 2, you have to put your type annotations in comments, operating in the style of the Google Closure toolchain.) Although Mypy does not appear to be as mature as Flow (support for incremental type checking is still in the works, for example), simply being able to succinctly document type information was enough to renew my interest in Python.

In researching how to use Thrift from Python, a Google search turned up some sample Python code that spoke to Thrift using asynchronous abstractions. After gradual typing, async/await is the other feature in JavaScript that I cannot live without, so this code sample caught my attention! As we recently added support for building projects in Python 3.6 at work, it was trivial for me to get up and running with the latest and greatest features in Python. (Incidentally, I also learned that you really want Python 3.6, not 3.5, as 3.6 has some important improvements to Mypy, fixes to the asyncio API, literal string interpolation like you have in ES6, and more!)

Coming from the era of “modern” JavaScript, one thing that was particularly refreshing was rediscovering how Python is an edit/refresh language out of the box whereas JavaScript used to be that way, but is no more. Let me explain what I mean by that:
In Python 3.6, I can create a new file in my text editor, write Python code that uses async/await and type annotations, switch to my terminal, and run python to execute my code.
In JavaScript, I can create a new example.js file in my text editor, write JavaScript code that uses async/await and type annotations, switch to my terminal, run node example.js, see it fail because it does not understand my type annotations, run npm install -g babel-node, run babel-node example.js, see it fail again because I don’t have a .babelrc that declares the babel-plugin-transform-flow-strip-types plugin, rummage around on my machine and find a .babelrc I used on another project, copy that .babelrc to my current directory, run babel-node example.js again, watch it fail because it doesn’t know where to find babel-plugin-transform-flow-strip-types, go back to the directory from which I took the .babelrc file and now copy its package.json file as well, remove the junk from package.json that example.js doesn’t need, run npm install, get impatient, kill npm install, run yarn install, and run babel-node example.js to execute my code. For bonus points, babel-node example.js runs considerably slower than node example.js (with the type annotations stripped) because it re-transpiles example.js every time I run it.
Indeed, the JavaScript ecosystem offers all sorts of tools to speed up this process using daemons and caching, but you or someone on your team has to invest quite a bit of time researching, assembling, and maintaining a JavaScript toolchain for your project before anyone can write a line of “modern” JavaScript. Although you may ultimately achieve a nice edit/refresh workflow, you certainly will not have one out of the box as you would in Python.
“JavaScript is no longer an edit/refresh language.”
Another refreshing difference between JavaScript and Python is the “batteries included” nature of Python. If you look at the standard library that comes with JavaScript, it is fairly minimal. The Node environment does a modest job of augmenting what is provided by the standard library, but the majority of the functionality you need inevitably has to be fetched from npm. Specifically, consider the following functionality that is included in Python’s standard library, but must be fetched from npm for a Node project:
deleting a directory
argument parsing (I can’t even…)
creating a temp file
Logging (there are too many to options for me to decide which ones to link to)
unit testing (again, too many to list)
printf format strings
left-justify a string (Node developers are still having nightmares over this one)
As you can see, for many of these features, there are multiple third-party libraries that provide overlapping functionality. (For example, if you were looking for a JSON parser, would you choose parse-json, safe-json-parse, fast-json-parse, jsonparse, or json-parser?) To make matters worse, npm module names are doled out on a first-come, first-serve basis. Much like domain names, this means that great names often go to undeserving projects. (For example, judging from its download count, the npm module named logging makes it one of the least popular logging packages for JavaScript.) This makes the comparison of third-party modules all the more time-consuming since the quality of the name is not a useful signal for the quality of the library.

It might be possible that Python’s third-party ecosystem is just as bad as npm’s. What is impressive is that I have no idea whether that is the case because it is so rare that I have to look to a third-party Python package to get the functionality that I need. I am aware that data scientists rely heavily on third-party packages like NumPy, but unlike the Node ecosystem, there is one NumPy package that everyone uses rather than a litany of competitors named numpy-fast, numpy-plus, simple-numpy, etc.
“We should stop holding up npm as a testament to the diversity of the JavaScript ecosystem, but instead cite it as a failure of JavaScript’s standard library.”
For me, one of the great ironies in all this is that, arguably, the presence of a strong standard library in JavaScript would be the most highly leveraged when compared to other programming languages. Why? Because today, every non-trivial web site requires you to download underscore.js or whatever its authors have chosen to use to compensate for JavaScript’s weak core. When you consider the aggregate adverse impact this has on network traffic and page load times, the numbers are frightening.
So…Are You Saying JavaScript is Dead?
No, no I am not. If you are building UI using web technologies (which is a lot of developers), then I still think that JavaScript is your best bet. Modulo the emergence of Web Assembly (which is worth paying attention to), JavaScript is still the only language that runs natively in the browser. There have been many attempts to take an existing programming language and compile it to JavaScript to avoid “having to” write JavaScript. There are cases where the results were good, but they never seemed to be great. Maybe some transpilation toolchain will ultimately succeed in unseating JavaScript as the language to write in for the web, but I suspect we’ll still have the majority of web developers writing JavaScript for quite some time.

Additionally, the browser is not the only place where developers are building UI using web technologies. Two other prominent examples are Electron and React Native. Electron is attractive because it lets you write once for Windows, Mac, and Linux while React Native is attractive because it lets you write once for Android and iOS. Both are also empowering because the edit/refresh cycles using those tools is much faster than their native equivalents. From a hiring perspective, it seems like developers who know web technologies (1) are available in greater numbers than native developers, and (2) can support more platforms with smaller teams compared to native developers.

Indeed, I could envision ways in which these platforms could be modified to support Python as the scripting language instead of JavaScript, which could change the calculus. However, one thing that all of the crazy tooling that exists in the JavaScript community has given way to is transpiler toolchains like Babel, which make it easier for ordinary developers (who do not have to be compiler hackers) to experiment with new JavaScript syntax. In particular, this tooling has paved the way for things like JSX, which I contend is one of the key features that makes React such an enjoyable technology for building UI. (Note that you can use React without JSX, but it is tedious.)

To the best of my knowledge, the Python community does not have an equivalent, popular mechanism for experimenting with DSLs within Python. So although it might be straightforward to add Python bindings in these existing environments, I do not think that would be sufficient to get product developers to switch to Python unless changes were also made to the language that made it as easy to express UI code in Python as it is in JavaScript+JSX today.
Key Takeaways
Python 3.6 has built-in support for gradual typing and async/await. Unlike JavaScript, this means that you can write Python code that uses these language features and run that file directly without any additional tooling. Further, its rich standard library means that you have to spend little time fishing around and evaluating third-party libraries to fill in missing gaps. It is very much a “get stuff done” server-side scripting language, requiring far less scaffolding than JavaScript to get a project off the ground. Although Mypy may not be as featureful or performant as Flow or TypeScript is today, the velocity of that project is certainly something that I am going to start paying attention to.

By comparison, I expect that JavaScript will remain strong among product developers, but those who use Node today for server-side code or command-line tools would probably be better off using Python. If the Node community wants to resist this change, then I think they would benefit from (1) expanding the Node API to make it more comprehensive, and (2) reducing the startup time for Node. It would be even better if they could modify their runtime to recognize things like type annotations and JSX natively, though that would require changes to V8 (or Chakra, on Windows), which I expect would be difficult to maintain and/or upstream. Getting TC39 to standardize either of those language features (which would force Google/Microsoft’s hand to add native support in their JS runtimes) also seems like a tough sell.

Overall, I am excited to see how things play out in both of these communities. You never know when someone will release a new technology that obsoletes your entire toolchain overnight. For all I know, we might wake up tomorrow and all decide that we should be writing OCaml. Better set your alarm clock.
This post originally appeared on

Skype testing real time code editor feature for

Microsoft is currently working on a real time code editor for its The feature will allow people to conduct coding and technical interview without having to switch between a Skype call and code editing application.

This feature provides users with assistance in the form of video call on top of the code editor.The feature currently works with Microsoft Edge or Google Chrome browsers meaning users would need access to only on the above browsers.

The editor supports seven programming languages like C, C++, C#, java, Javascript, Python and Ruby. A real time execution feature will be included in the coming updates. However for this feature to work in the Browsers the default language needs to be set to English only.

Users would need to visit and click on “Start interview” and will be provided with a unique link that can be accessed by a participant. During the interview programming languages can also be changed by clicking the button which is found on the upper left hand side of the screen. The video call is started once you click on “Start Video Interview” Button.