Showing posts with label cloud computing. Show all posts
Showing posts with label cloud computing. Show all posts

The concept of totally-dynamic system

During my doctorate studies I came to the notion of totally-dynamic system. In order to imagine what totally-dynamic system is, first think of a simple plain-HTML website from late 90-ties: such a system is static by data (its contents can be manually modified only by its programmers); static by hardware (it runs on a number of servers and this state of affairs can be manually changed by system administrators and usually requires full system restart); and static by software (its software does not change during system runtime, can be modified manually by its creators). So, in runtime, such a system is totally static. Now let us look at modern data-driven application, for example, any web 2.0 service: it is dynamic by data, as its behavior changes depending on data, generated by its users during system runtime; as for other parameters - hardware and software - it is static. Most of modern applications, be it web , desktop or mobile applications, are dynamic by data. Nowadays, systems with dynamic hardware are becoming very popular. Basically, there are two types of such a systems: ad-hoc networks and services that use cloud-computing. Ad-hoc networks are usually dynamically-formed networks of mobile devices like cell phones or smarpthones. The hardware of such a network is the whole set of mobile devices, which are currently connected to a network, and thus, it is constantly changing. As for services that use cloud computing, they receive additional hardware from cloud computing service provider (like Amazon EC2 or Joyent Accelerator) in times of peaks in their load. It is a widely accepted opinion that systems with dynamic hardware are going to flourish in the nearest future, as they are more cost effective in comparison to their hardware-static counterparts. Thus, it is likely that hardware-dynamic systems will replace hardware-static, just like data-dynamic systems replaced data-static. You should also note that all modern hardware-dynamic systems are also data-dynamic.

Now, one last step to totally-dynamic is software-dynamic system: a system, whose software modifies itself during system runtime, adapting to ever-changing environment. Software-dynamic system is not as futuristic as it might seem: such systems were created as early as in 1960-ies during early experiments with artificial intelligence. The key here is the programming language of the software: the more high-level it is, the easier is to create software-dynamic system with it. Probably, the most suitable language for software-dynamic systems is LISP, as its code is actually its main data type – list (LISP function is actually a list, whose “head” (CAR) is function name and “tail” (CDR) is function arguments); thus, LISP program can easily feed its code to itself and modify it during runtime. However, industry-standard languages are moving towards LISP's reflective capabilities, and now some of such a languages are reflective enough to be suitable for software-dynamic system creation. For instance, Ruby, the foundation of Ruby on Rails framework, has very high reflection capabilities and is quite suitable for writing self-modifying programs.


Imagine the system, which is data-dynamic, hardware-dynamic and software-dynamic at the same time. Such a system will behave differently depending on data generated by its users; its hardware will be constantly changing, growing or shrinking; its software will constantly modify itself, be it making good use of newly connected advanced devices or adapting to changes in system's userbase. This is the system I call totally-dynamic. I claim that software engineering is moving towards totally-dynamic systems, and this move is right from the evolutionary standpoint. Animals are natural analogies of totally-dynamic systems: they change their behavior in accordance to data they get from the environment (data-dynamic); their “hardware” change depending on what they do, e.g. their muscles grow due to intensive hunting (hardware-dynamic); their “software” also change during their lifetime and from generation to generation due to evolutionary mechanisms (software-dynamic). Humans are also totally-dynamic systems, just more advanced. Thus, its obvious that totally-dynamic systems evolve under certain conditions. It means that should we create totally-dynamic system and place it in some sort of genetic algorithm, one day it may evolve to an intelligent system, just like intelligent animals evolved from unintelligent ones. This may be the road to artificial intelligence creation. We hadn't much success with the creation of AI within our labs, but who knows, maybe AI will come out of an unexpected place. Maybe the next generation communication service (the descendant of Facebook, Twitter, or FriendFeed), which will be a totally-dynamic system, will one day evolve into an intelligent being.

The PC of 2019 - Critique of Computerworld Article

In recent Computerworld analytical article Mary K Pratt tries to accurately predict what the PC would look like by the year 2019 by aggregating the predictions of leading hardware and software researchers and developers, as well as a few prominent computer scientists. According to the author, the PC of the future will resemble todays smartphones in portability and will have all the valuable data and applications stored "in the cloud" (distributed internet storage, accessible from anywhere). These future PCs will be people's mobile phones, laptops and PCs at the same time; they will be "the context machines", switching data and application contexts in accordance to person current task. Such a prediction is in line with the recent trends of "computing in the cloud", "SaaS" (software as a service) and the move from specialization to general-purposeness in mobile devices evolution. The combination of "huge computational and storage resouces in the cloud" and "portable devices with constant internet connectivity" is the only combination of factors that can give users both power and portability at the same time, assuming technologies won't change drastically in 10 years. However, Pratt's opinion seems to be biased towards SaaS and mobile devices development trends. It worth nothing that all of the mentioned trends appeared less than 10 years ago, and thus in the next 10 years they may as well disappear, giving a way to something completely new. Also, I wouldn't recommend to underestimate the survivability of traditional PC: there were a lot of predictions of their failure during the past 20 years, but the PC is still there, it remained conceptually unchanged contrary to all predictions. Another thing that Pratt didn't put into equation is ultimate users stupidity: typical users have been mindlessly wasting most of their PCs computational power for the past 10 years on running viruses and antiviruses, and I don't think someone would stop them from doing it for another decade. Yet another factor that can prolong current PC state is the opposition of hardware companies, that are not interested in disappearance of huge PC manufacturing business in merger or even complete replacement by smartpone hardware business. Just like oil corporations suppress the development of alternative energy sources, PC manufacturing corporation may suppress this kind of PC evolution process, and thus slow down the progress in this area.


In my opinion, the typical PC of 2019 will be almost like our today's PCs, just much more powerful and with most of software and storage moved to the web. SaaS and cloud computing growth seems inevitable, as it solves all of the majour problems of packaged software: cost, piracy and complexity of upgrade. However, I believe, there still will be some non-SaaS, packaged software installed on PCs, e.g. games, multimedia players; even word processors, as archaic as they look even now, may survive for another 10 years. As for "the context machines", they will exist and will be used by many, they just won't be so advanced as an article states; and as they won't be the evolution of PC, but rather that of smartphone, this kind of devices surely won't be called PCs in 2019. However, only time will tell the truth.