I had a nice conversation with Donald Fischer at Typesafe at DreamForce 2011, the annual Salesforce.com event. Donald's the CEO of a firm whose software takes advantage of the multi-core capabilities of modern computers. While his solution is a hit with academics and Java developers, it really presages a number of changes that will likely take place for all kinds of business applications and to the kinds of software businesses (and, by inference, software developers) should be creating.
For business execs, this is important. Stick with me and I'll try to impart the importance of this kind of tech.
1) Your old technology is based on limitations. As a result, software designers have automated only those capabilities that could run on the technology available. All of those great operations research algorithms, transportation routing designs, equipment deployment, etc. programs your firm wants and needs were often left undeveloped. If your firm does possess some of these, these applications were likely developed on highly specialized computing equipment using difficult to understand or update programming languages. These are the programs that only a few ‘information scientists' can even touch let alone understand.
2) Products like Typesafe democratize things as they can utilize newer computers with their multi-core processors and run different aspects of a complex problem across all of these processors. Older systems had but one (often slow) processor that required every computation, every record, etc. to be sequentially processed. Over time, computers added specialized sub-processors to handle some tasks (e.g., graphics rendering) but these didn't give the same pop that multiple CPUs can deliver. A new machine with six processors, for example, could simultaneously process six records. The catch, though, is the programming languages that fully exploit these multi-processor machines are hard to use and not necessarily favorites with millions of programmers. Typesafe's technology enables Java programmers to easily take advantage of this multi-core environment without the attendant headaches of older methods.
3) But just taking full advantage of these processors within a server is still insufficient. Many businesses have dozens or hundreds of servers each with multi-core processors. Imagine, if your firm needed to run a complex simulation, it could now harness the power of every machine in your network (and every processor within each) to solve this simulation in seconds, not hours.
4) Powerful new technologies allow businesses to gain competitive advantage. Technologies like this enable businesses to:
a. Find and exploit arbitrage opportunities better/faster than competitors
b. Process mass data feeds (e.g., weather data) fast, frequently and efficiently. Would your retail business benefit from having employee work schedules dynamically adjusted based on the evolving weather situation occurring at each and every location in near real-time?
c. Model auctions, buyer behavior, etc. during selling and negotiating events
d. Understand and model how supply chains will weather disruptions
e. Evaluate hundreds or thousands of different what-if pricing and promotion combinations and their effect on the company, its competitors, its supply chain partners and its bottom line
Application software vendors (e.g., ERP vendors) really, really need to get behind this. Granted, some of the firms with deep manufacturing or transportation functionality have some solid optimization and other algorithmic tools. But just think how powerful an analytics or forecasting capability could be if it were re-thought/re-imagined to take advantage of almost limitless computing power that can render results and insights in mere seconds?
Cloud and Virtualization (VM) technologies present some compelling other reasons to combine these advanced programming and multi-threading opportunities. Don't just move an old single-threaded application to someone else's cloud server. Find a way to exploit the zillion processors on that cloud to deliver real insights to a business. That's the future of computing (and the future of businesses that smartly use it).
I just wanted to point out that the Scala language is a key component of Typesafe's offering. Typesafe is providing a number of commercial wrappings around Scala. These will make the uptake of Scala easier and faster for programmers.