1.Context and technological basis
In my previous articles i’ve treated improvements that can be brought not only to algorithms – and generally apps – but also to the process of their development. However, the degree to which these improvements are implemented today isn’t very high, so research topics arise around how to best help users and developers alike, based on the treated technologies.
A purely software application, excepting the classic example of sorting, is decision. Decision making is one of those things that can always be improved, for example, in expert systems or games. Benefits can reach hardware and even more general physical applications by passing over the IT barrier. Exploring this outward flow of evolution, some of the targeted fields are:
- Storing – with both of its major exponents: hard-disk and memory
- Surface processing – fire extinguishing, etc.
- Navigation – GPS, etc.
- Health-care – imagistic investigations
A similar, barrier based, approach can be used on research directions by separating the entities which participate in or are affected by the specific scope. For example, a client is served by a server, and, as with any service, resources are consumed. These 3 elements (servers, clients and resources) can form the basis for a unitary perspective on what issues should be tackled in the future.
- servers rely on client apps to show their performance to users (without clients, servers are useless)
- client apps rely on operating systems to function (without operating systems, clients apps can’t function)
This is different because it deals with data availability in the confines of the existing structure, described in the previous section. Streaming video is the best example: much of it, if not all, is loaded before you actually watch it. But what if the user pauses the video? or doesn’t even watch it to the end? A certain quantity of resources will then be wasted by the server side, boiling everything down to user experience vs. available resources (bandwidth, processing, etc.). It’s important, though, that this ratio can be measured so the service provider can choose what fits bets. Another, similar, example is online PDF viewing. Every page is (pre)loaded individually, usually as an image, and the same questions persist: Does the user scroll down through the whole document? Should the following pages be preloaded? If so, how many?
- it’s been determined that Michael watches 85% of his videos entirely;
- John watches to the end of about 50% of the videos.
3.3.Processing / Workload distribution
- Energy cost distribution – equipment needs electrical energy to run. No wonder profile companies are green energy pioneers;
- Wear distribution – there is a certain lifetime for every piece of equipment. When it stops working it has to be replaced (which is another cost), so data loss and degradation of service have to be prevented.
- games: storage and workload are mostly kept offline – the server is just a platform (not without workload though
- streaming: storage is kept online but the content is constructed offline
- converters: there are many sites that convert files to various media or office formats – the storage is offline but the intensive workload is done online
There’s also the possibility of mapping this vision on other entities, not only clients and servers per-say. Both the ‘client’ and ‘server’ can be offline (a developer served by an IDE) or both can be online (social API providers, in-browser instant messaging, etc.). Assisting developers is a domain of interest because it enables faster development and more efficient implementation on user machines. For example, my bachelor thesis dealt with automatic comparisons of sorting algorithms; the results can be used to determine which algorithm is the best for a certain array size. Such an optimization can be made at runtime, by adding a size check in the deployed framework methods, but even that extra size check decreases performance. So why not help the developer in the implementation phase by creating plugins or extensions for the IDE to automatically detect the array size and choose the best sorting algorithm to begin with?
Not only when implementing technological progress but also when contemplating future challenges, sci-fi’s role should be reiterated.
Rama-Kandra: …heard a program speak of love?
Neo: It’s a… human emotion.
Rama-Kandra: No, it is a word. What matters is the connection the word implies. I see that you are in love. Can you tell me what you would give to hold on to that connection?
Rama-Kandra: Then perhaps the reason you’re here is not so different from the reason I’m here.
Continuous technological improvements are undeniable at this point in history. As growth is becoming exponential and the world population is always increasing, the priorities and patterns of expansion should be defined at a global level in the interest of all parties involved: companies as commercial entities, developers as the driving force of the industry and users which essentially represent everyone.
- Google Chrome shifts architects’ equations as V8 powers the browser, Rich Seeley&Jack Vaughan – SearchSOA
- Introduction to HTML 5, Brad Neuberg – Google Developer Programs
- New elements in HTML 5, Elliotte Rusty Harold – IBM developerWorks
- The systemic impact of client-side apps. Optimization techniques, Teodor Filimon – bachelor thesis
- Automatic Algorithm Recognition and Replacement: A New Approach to Program Optimization, Robert Metzger&Zhaofang Wen – The MIT Press
- Automatic Algorithm Selection (AAS) – technology in Wolfram Mathematica