Archive for cognitive computing

Machine Learning May Help Developers

IDE Pictures

This blog was originally published on the Amalgam Insights website.

As the fall season of tech conferences starts to wind down, something is quite clear – machine learning (ML) is going to be everywhere. Box is putting ML in content management, Microsoft in office and CRM, and Oracle is infusing it into, well, everything. While not a great leap forward on the order of the Internet, smartphones, or PCs, the inclusion of ML technology into so many applications will make a lot of mundane tasks easier. This trend promises to be a boon for developers. The strength of machining learning is finding and exploiting patterns and anomalies. What could be more useful to developers? Here is some examples:

  • Coding – The most obvious application of machine learning is in the coding of applications itself. Coding is based around patterns that are known to work (design patterns, best practices, etc.) and automating them is always going to be helpful. Automating the creation of new code, however, will have only incremental value at best. Modern IDE a have code completion library and API lookup, and automated code generation already. In other words, there is already plenty of features that help a developer to automate the more tedious and inefficient parts of the job. With the proliferation of APIs, SDKs, and code libraries in use, having more intelligent search is a useful application of ML. With machine learning, the IDE may be able to anticipate which APIs and libraries that a developer needs from the context of the code and suggest them.
  • Debugging – Where ML will probably help the most will be in debugging. Debugging code is the hardest part of software development. Often, debugging feels like trying to find the needle in the haystack. It’s even harder to debug someone else’s code and this is where ML will come in handy. Most developers have certain patterns to the mistakes they make. It’s human nature, like always drifting to the right when walking in the woods. ML would help to find individual programmer’s patterns and styles and be able to look for instances where a mistake is being generated. In addition, there are distinct patterns in good code and the ability to discover anomalies in those patterns would help to identify bugs quickly.
  • Testing – Another area where machine learning can help developers with managing test data. Intelligent creation of test environments, environments that mirror real world patterns, can be derived by analyzing production applications and developing test data sets. Test data created this way could match the range of situations an application typically might encounter without using actual extracted data. Using machine learning to create test data would give developers the kind of test data they need without having to deidentify real data or risk violating customer privacy.
  • Project management – large transformation projects pose considerable problems for project management. With teams spread out over distances, working on many parts of the project simultaneously, it can be difficult to coordinate resources and personnel to maintain development efficiency. Just getting a picture of the state of a large-scale project requires a number of people reporting on progress in addition to metrics gathered automatically by tracking systems. This can be highly inefficient. Much is left to the interpretation of generated data and subjective assessments of progress. Simple metrics, such as the burn-down rate, are interpreted in the context of individual manager’s goals and subject to bias. Development managers and project managers all have psychological factors that affect the assessment of a project and can delay acting on warning signs. Machine learning, on the other hand, can be used to analyze patterns in the development data over several parts of a project or over many projects to discern anomalies and warning signs. With this knowledge project managers will be able to manage dependencies, see the unhealthy signs of failure without bias, and gain assistance when rebalancing resources and addressing problems.

IT managers are still more interested in leveraging machine learning to enhance the product of their labors not the process. In time, developers and project managers will see the value in employing machine learning to help manage large projects, especially when spread over the globe. The gains in efficiency and early warning system alone are worth the effort.

Quantum Computing Gets a New Player

Feynman Diagram

This was originally published on the Amalgam Insights website.

Last week (the week of September 25th, 2017) Microsoft made a huge announcement at its annual Ignite and Envision conference. Microsoft has become one of a small number of companies that is demonstrating quantum computing. IBM is another company that is also pursuing this rather futuristic computing model.

For those who are not up to date on quantum computing, it uses quantum properties such as superposition and entanglement to develop a new way of computing. Current computers are built around tiny electron switches called transistors that allow for two states, which represent the binary system we have today. Quantum computers leverage quantum states that give us ones, zeros, and combinations of one and zero. This means a single qubit, the quantum equivalent of a bit, can represent many more states than the bit can. This is, of course, a gross oversimplification but quantum computing promises to deliver more dense and exponentially faster computing.

There are a number of problems with practical quantum computing. The hardware is still in a nascent stage and must be cooled to a temperature that is quite a bit colder than deep space. This makes it much more likely that quantum computing will be purchased via a cloud model than on-premises. The other inhibitor is that there is no standard programming model for quantum computing. IBM has demonstrated a visual programming model that shows how quantum computing works but is clearly not going to be a serious way to write real programs. Microsoft, on the other hand, showed a more standard looking curly bracket programming language. This application layer makes quantum computing more accessible to existing programmers who are more used to the current model of computing.

When quantum computing becomes practical – I would predict that is at least 5 years away, perhaps longer – it won’t be for everyday computing tasks. The current model is already more than adequate for those tasks. It’s also unlikely that the capabilities of quantum computers, especially the information dense qubit, and costs will have much a place in transactional computing. Instead, quantum computing will be used for analyzing very large and complex data sets for simulation and AI. That’s fine because the AI and analytics market is still new and the future needs are not yet completely known. That future computing needs is what quantum computing is meant to address. Even today’s big data applications can stretch computing capabilities and force batch analytics instead of real-time for some use cases.

Microsoft’s entry into what has been an otherwise esoteric corner of the computing world signals that quantum computing is on the path to being real. It has a long way to go and many obstacles to overcome but it’s no longer just science fiction or academic. It will be years but it is on the way to becoming mainstream.