Semantic search improvements by Google

Google are improving their game. They know a good deal of information about us and many other entities we commonly deal with, and associations between entities. Therefore they can infer more useful search results from the usual thin stream of information we give in a search because the context of a search is much greater than what we type in. This should make for more accurate search results. However this could also tend to push the more interest results down the list, reducing the chance for serendipitous discoveries. Perhaps they can provide a serendipity slide control. Anyway, this also opens up a new frontier for SEO and dilutes a little the heavily abused priority attached to links. Good thing too.
Semantic search

Eye-tracking

Eye-tracking will soon be available commercially to control devices and to monitor what we look at and hence think is important. The advertisers are going to love this technology. We may all end up wearing glasses to prevent them reading our thoughts through our eyes. We may even find ourselves modifying our behaviour to avoid giving away too much information in some situations. Combine this with retina scans and we have a potent combination.
We will no doubt start to see adverts that tune themselves to our interests. Perhaps even following us and re-presenting themselves in various forms as the opportunity arises. By learning what captures our individual interest they will be able to more accurately influence our thoughts.
Powerful hardware is required but will soon be available at affordable prices. Naturally this will appear first in commercial settings and high end products, but it is sure to end up everywhere. Perhaps we will at last be able to abandon the remote control.
As ever the technology is neutral, but the people applying won’t be. This technology is going to be intrusive and helpful. In this case we should be ready to make the best of it as the worst of it will happen to us anyway.
Eye-tracking article by Slate

Is cloud the right choice?

The risk of interrupted access to data can be measured in terms of the amount of computing hardware and software it must pass through. So if the only or main data store and processing is by internet services, the risk to access is much higher. The same can be said of data security. Indeed, by UK law some data must be held with specific constraints that naturally militate against the main principle of the cloud, which is to delegate IT management, reducing IT to a set of benefits and business level decisions. Nonetheless, cloud solutions do present opportunities to do things that were difficult or impossible before, especially in terms of scalability and volatility of resource requirements.
All this raises an important question: Are cloud services a sound choice if more proximate services are an option?
I think the cases where cloud services are the only option are few. I also don’t believe that a substantial cost reduction is possible because of purchasing large amounts of equipment, especially when the costs of running a large organisation are taken into consideration. Locating services in economies with lower costs definitely has price advantages, but at the cost of access time and risk to access and security. I have noticed that where worthwhile cost reductions have been claimed it is often at the expense of IT jobs. As a result either the cloud provider must be adding a similar number of people and hence costs which will eventually return in service prices, or the services offered cannot be as well matched to the specific needs of the business. That standardisation of IT and hence business processes reduces the opportunity for business differentiation.
In the end there is no generic answer to the question. Care must be taken to make the right decision.

Developers less interested in Android

This TechRadar article says a recent survey of 2,173 out of Appcelerator’s 280,000 mobile platform developers shows a decline of interest over the last year in developing for Android smartphones from 86% to 78% and for Android tablets from 75% to 67%. An Appcelerator spokesman thinks that the wide variety of versions of the OS in use is turning developers away. By contrast Apple’s approach of tightly controlling the hardware and OS reduces compatibility issues at the expense of choice.

Better wireless chip improves possibilities

Low power Bluetooth and better battery life will allow users of mobile devices to leave Bluetooth running for longer. This makes connecting to Bluetooth beacons to find indoor location viable. Unfortunately the discovery phase of the Bluetooth protocol is slow limiting its usefulness as the device moves quicker.
Broadcom has announced their BCM4752 chip with support for 802.11ac and low-power Bluetooth. Naturally the new chip is smaller and uses less power.
New Broadcom 4752 chip for wireless comms

Programming language evolution and selection

For non-web-based programming where performance is of paramount concern C and Fortran are the natural choice. However, they both suffer from a lack of features designed to simplify working with large codebases. C++ performance has improved dramatically to today, putting it not far behind C and Fortran, and it is more suitable for working with larger codebases. All three languages focus programmer effort on issues that were important when they were created, but that in more recent languages are automated in favour focusing effort on other issues. Java and C# shifted the focus further toward managing larger codebases and code reuse. They also began simplifying development of web-based systems and multi-threading. More recent languages like Scala take that focus further and recognise that changes in hardware and usage patterns require more focus on scalability and concurrency. This trend of automation to refocus programmer effort inevitably reduces performance, but that is compensated for by improvements in hardware performance. It seems that Scala or languages like it will soon supplant the currently ubiquitous Java and C#.

For web-based systems the server side is best implemented, depending on criteria, in Scala with Lift, or Ruby on Rails, or PHP. Scala syntax is concise, which can make the intent of code easier to see by reducing the statements that need to be read. Some say that cumulatively this improves working with large codebases. Its performance is fairly good and it is designed to scale well, so it is good for serving high demands. Its main problems are use of the less familiar functional programming style, although this is not mandated, and the latitude the language affords programmers making it less team friendly and more complex to look at. Importantly the Lift web application framework makes Scala web-friendly. There is an active community developing this language, so it will probably see some useful improvements. It runs on the JVM and a version of it runs on .Net. Unfortunately most low cost web-hosting companies will not support Java and .Net on their servers because they are too resource intensive. So my next choice is Ruby which is available on cheap web hosting. Like Lift for Scala, the Rails web application framework makes Ruby web-friendly. Ruby performance is competitive with languages that have similar objectives and has a nice clean syntax that should be easy to learn for anyone familiar with OO languages. It is popular among web developers looking for an alternative to PHP for managing medium sized and larger projects. It is good for light to moderate demand but is not as good as Scala for high demand. PHP is ubiquitous in web hosting, has slightly better performance than Ruby – especially for best cases – and is adequate for simple web form solutions. However, its style makes it less helpful for anything but simple projects and its lower performance makes it suboptimal for high demand scenarios. Python is popular in academic circles, but I see no compelling reason to recommend it. It has a marginal performance advantage over Ruby, especially in best and worst cases, but it is less commonly available. Perl is widely available, but slower than its competitors and suffers from the same unhelpful features as PHP.

Client side behavioural support for web-based systems on browsers is still dominated by ECMAScript (JavaScript/JScript). HTML5 and CSS3 have added a lot of features that are reducing some of the need to use ECMAScript and the browser makers seem keen to get their browsers compliant.

Client side support for web-based systems in applications is bifurcated. The popularity of Apple products means that Objective-C is widely used. However, the continuing rise of the Android OS by Google means that Java is the language of choice for most handheld devices. In theory, as Android has a JVM and Scala is JVM based it should be able to run Scala programmes.

I feel that the issues that will increasingly be of concern to language development are simplifying concurrency, and web-distributed processing as networks and internet connections have higher bandwidth, reduced latency, and become more reliable. Performance of a system will become less constrained by the device one is using and more limited by how much one is prepared to pay for the required processing. Inevitably, these trends will lead to new languages that address them.

Here is a performance comparison of the languages discussed above.