Archive - 2016

Multipartial Upload or How to Bring Amazon S3 and Legacy Code Together

A large part of software development projects today are either being developed for quite a long time, or received as a legacy from another team. Such code has been in most cases written by people no longer working in the team. Another pitfall can be the requirement to create an unchangeable and backward compatible API product. Under such conditions, the team have to provide the product support and even introduce new features. I encountered a similar problem connected with legacy code on one of ISSArt’s projects.

Read More

Automated Tests: Why and How

If you aren’t implementing a prototype for some quick demo in some 8 hours, 3 days, etc. to archive it in a folder like the “trash” right after that, then you will have to think about the quality assurance, finding bugs, etc. Somebody will have to do this job after all. Whether you include the automated tests in the code development process or you totally rely on the testers, the automated tests will appear in your system sooner or later (or the project will die aborning).

The worst thing is that auto tests are also the code, i.e. all problems relating to the code development (the design, bugs, usability, performance, etc.) exist in tests. When you automate the testing, you actually implement the new functionality in your system. Thus, you should develop tests as any other features.

Read More

Augmented Reality: Staying Ahead in Your Industry

Augmented reality has the ability to disrupt the way every single business and industry operates in the next half-decade. From the obvious industries like construction, to the not-as-obvious industries like auto repair, will find new ways to compete and offer better experiences for their customers.

This “cool” idea that has been in the labs for years, may soon become reality for every business. It’s part of the growing trend to deliver personal, customizable, and interactive services and products that today’s consumers are demanding.

While a majority of the time augmented reality (AR) has been used in the gaming — PokemonGo went viral — and entertainment industries, the potential business applications are far more powerful. Augmented reality can be used in industries like manufacturing, logistics, education, construction, and more.

Read More

Systems Integration: Integrate or Perish

An organization’s ability to grow and compete in today’s competitive environment is directly proportional to their integration ability, specifically systems integration. The pursuit of an integrated system is no longer optional for any business, in good times or bad.

An effective integration strategy is key to making multiple units work together to improve performance, increase efficiency and capacity, lower cost, and discover unique opportunities that only appear when you look across business functions.

The 21st-century has been appropriately named the integration century. Soon, every single business — from the major conglomerate in varying industries to the small-local business — will need to integrate their systems and data if they want to successfully overcome the challenges of tighter profit margins, increased governmental regulations, and the demand for customization and personalization.

Read More

What You Need to Know About Industry 4.0

Nearly 200 years after the first industrial revolution, the world is at the start of a fourth revolution. One that offers a great promise and many benefits. This revolution is known as industry 4.0.

Today’s technology — big data, cloud computing, and the Internet of Things (IoT) — is driving this new industry. It promises to make productization faster, create better profit margins, and give companies a competitive advantage in an increasingly competitive environment.

It’s going to take the manufacturing automation to the next level. Business models will be impacted, redefined, and new ones will be created. Machine safety will increase and risks to worker will decrease. It will touch the world.

Read More

Outsourcing: Pros and Cons of Working on Customer’s Site

Have you ever outsourced a software development team? Or have you ever provided Customers with your services remotely? Of course, a lot of people and companies have had this experience. Outsourcing has become a common trend in information technology as well as in other industries. This article looks at the benefits of outsourcing services and the valuable advice offered by Yulia Bulakhova who had worked on the Customer’s site for several months.

Read More

How to Reach Performance Optimization in the Cloud

The cloud is becoming more and more important, so organizations need to make sure they reach performance optimization. This article shares some challenges with the cloud and offers solutions.

More and more companies are embracing the flexibility, low barrier-to-entry, and collaboration that the cloud offers. The Infrastructure as a Service market has been growing by more than 40% in revenue every year since 2011, according to Gartner. This trend is only expected to continue to grow more than 25% per year through 2019.

The cloud, which has been dismissed as a fad, is quickly becoming the default method for delivering IT solutions. Everything from infrastructure design to Java application development needs to take the cloud into account.

Read More

Search functionality design practices. Part 2

Implementation of the search functionality is a challenge for a software developer. Search-related requirements influence significantly on the final architecture of the system. In the first part we studied different filters and some practices of their implementation. In this part I will tell about the full text search.

Read More

Search functionality design practices. Part 1

The humanity had started searching long before the beginning of modern computer century. Thanks to the common sense people invented indices. Libraries, dictionaries, maps made the life easier for the next generations of knowledge hunters. And now you as a software developer face the necessity to implement your own search functionality. Usually you can meet search-related requirements at the end of the customer’s list. But, in my opinion, they influence significantly on the final architecture of the system. Furthermore, the search index is the foundation of searching, its design errors can lead to the wrong choice of storage or database that can break your system in general.

Read More

Comprehensive object enumeration in JavaScript

This cool JS snippet implements enumerations for JS:

function makeEnum(idField, indexField) {
  idField = idField || 'id';
  indexField = indexField || 'index';

  var enumeration = [];

  // Standalone object is useful for Underscore collection method usage,
  // for example:
  // _.keys(MyEnum.dict);
  var dict = {};
  enumeration.dict = dict;

  // This method can be used as a callback of map method:
  // var objects = ids.map(MyEnum.get);
  enumeration.get = function(id) {
    return enumeration[id];
  };

  // Registers a new enumeration item.
  enumeration.register = function(instance) {
    instance[indexField] = enumeration.length;
    enumeration[instance[idField]] = instance;
    dict[instance[idField]] = instance;
    enumeration.push(instance);
    return enumeration;
  };

  // Maps enumeration as dictionary:
  // MyEnum.mapDict(function(value, key) { return ...; });
  //
  // This is a shorthand for the next Underscore expression:
  // _.chain(MyEnum.dict).map(function(value, key) {
  //   return [key, ...];
  // }).object().value();
  enumeration.mapDict = function(iteratee, context) {
    var result = {};
    for (var id in dict) {
      if (dict.hasOwnProperty(id)) {
        result[id] = iteratee.call(context || this, dict[id], id, dict);
      }
    }
    return result;
  };

  return enumeration;
}

Read More