Software as a Service: DockerCon US 2016

There was DockerCon US 2016 in June in Seattle [http://2016.dockercon.com]. Docker community grows from year to year, and this is the largest Docker-centric event. There are a lot of news announced during the sessions, plenty of use-cases described, talks about success stories from enterprise level projects to middle-size Software as a Service solutions.

New Features

There was announced new version of Docker 1.12. It should be released in several weeks. There will be built-in Orchestration and Docker Swarm.

Orchestration is a set of duties for installing, updating and maintaining your infrastructure during lifetime of the application. It doesn’t seem a problem in case of several servers, but if you have more systems to hold under control in your Software as a Service project, then it would not be so easy. Orchestration have to be useful and simple. To achieve both of those goals, the orchestration is built-in into new Docker version.

Docker Swarm

Docker Swarm is a technology to install and maintain a cluster for Docker. Several systems may be joined together and treated as the saem Docker container. There are Swarm manager and worker nodes. They are communicating in secured way via TLS transparently for software developers. We can use docker CLI to create a swarm:

Read more

Application Development: Polymer framework is a new better Web

Web and HTML as its main technology was designed more than 20 years ago. There was just the idea to publish rich format documents and reference each other in easy way. The purpose of the Web has been changed drastically several times during these years. A proposition to reinvent HTML sounds reasonable. There is a lot of hype around new Polymer project [https://www.polymer-project.org/1.0/] provided by Google. Its version 1.0 is already released and used widely. Polymer is based on Web Components technology. In practice, it’s treated as the same.

Web Components

Web Components is HTML5 standard for both extending HTML as a language and providing modularity for rich SPA solutions. A component is a sort of reusable part of the page. It contains all 3 parts of web application: HTML template based on regular tags and other components treated as children, CSS styles specific for the component and JavaScript code of this logical part of the page:

Read more

Application Development: JWT approach in scalable microservices architecture

Microservices architecture [http://martinfowler.com/articles/microservices.html] is a mature robust Web Application Development approach are widely used among all web development platforms. It allows easy integration, deployment and horizontal scaling for VPS, pure cloud or dedicated hosting.

Scalability problem

Generally, there would be several application instances runned on the same system or separated machines. User may connect or send request to any of front-end server and that transaction may be processed by any of instance of the next layer. That looks ok till we receive another request of the same user, which involves the result of previous transaction or an object specified for this case and this user. It’s called the state. And if it holds the state on specific instance, then the request have to be routed to that instance to be processed. Another approach is to share the state among all instances we have in the cluster. Both cases needs additional efforts for design, implementation and support. JWT provides a solution for this problem.

Read more

Web Development: Flexbox as new UI standard in Web

Layout as a problem

At design point of view, any web site needs some sort of layout. It’s a mandatory Web Development aspect for even very basic HTML content like landing pages. Modern web picture have to be splitted into logical parts in terms of some structure. The problem is the nature of the web. 30 years ago, when the web was actually invented, a page was treated as pure top-to-bottom flow of a text content and images. That was original layout only. A lot of technologies have been applied since that time. E.g., pure HTML tables, floating div elements. Most of them look like hacks. Keep in mind, there were outstanding features and behaviour of specific browsers and their versions. Yes, I’m talking about dark times of IE6. The situation became even worse because we had to support wide range of mobile devices in responsive way. To solve all these problems there are a lot of grid system implementations available as standalone libraries or complete Web Development frameworks. E.g., Bootstrap [http://getbootstrap.com], Foundation [http://foundation.zurb.com].

 Flexbox as a standard solution

Flexbox [https://css-tricks.com/snippets/css/a-guide-to-flexbox/] is not just one more solution, but rather a standard that solve layout problem on basic level. It would be better to have it initially at the beginning of Web Development epoch. W3C is going to add Flexbox to its official standards soon. Technically, it’s not a library but just a set of CSS3 properties to layout DOM elements. There are 3 versions of Flexbox properties set: old, tweener and new.

Read more

Web Development: TypeScript as OOP version of JavaScript

JavaScript is not classic OOP language

OOP (Object Oriented Programming) is the most popular style of coding for now. OOP programming languages are the most used for now. E.g., C++, Java and C#. These are the most used ones in software development. That’s why the majority of frontend developers have been coding in OOP paradigm. On the other hand, JavaScript dominates on the client side of Web Development. Besides, JavaScript is rising very quickly as server side language by node.js platform. JavaScript is not classic OOP programming language. Actually, there is some kind of OOP based on prototype, but it provides another approaches and patterns. One more point against JavaScript is its dynamically typed nature. These and some other features make JavaScript very outstanding. A lot of developer note that they are hate JavaScript.

 TypeScript for making JavaScript more friendly

There are several attempts to make JavaScript development more friendly and controllable. E.g., CoffeeScript [http://coffeescript.org] is a language that compiles into JavaScript. CoffeeScript code looks like Ruby. Its main goal is providing a minimalistic syntax to make source code smaller and elegant. Another way is TypeScript [http://www.typescriptlang.org] by Microsoft. It makes JavaScript look like regular OOP language with classes and static typing. TypeScript is a language, or rather to say extension to pure JavaScript, because it uses the same syntax as pure JavaScript, but introduces extensions to define types, interfaces, classes, modules, etc. There is a compiler to translate TypeScript code into pure JavaScript to run in browser or by node.js engine. It’s open source both the specification and the implementation hosted on GitHub. Thus, it may be used for any OS and platform. Install it globally into your system as any other npm module:

Read more

Application Development: Hapi.js is a professional node.js server framework

This month we created REST service as a project. Technical requirements were to use Hapi.js architecture [http://hapijs.com] to implement a solution. It’s a better alternative for well-known express framework. The problem with express is its simplicity in design. One of the goals of its authors was to make it as simple as possible. But in real life it’s not a criteria. You have to spend a lot of time to configure all components you need for your application. E.g., getting raw HTTP request content needs particular middleware attached into some point of HTTP request/response chain. That’s why a lot of teams and projects choose something more robust. Hapi provides very good balance between simplicity and power.

Beyond express framework

Hapi was created by Walmart software development team to hold under control their black-friday storm. By the way, this fact shows us one more time that node.js platform has both high performance and robust Application Development approaches.

Read more

Application Development: WebGL

A lot of cool technologies are coming from non-web world to Web Application Development. One of the most excited examples is WebGL [https://www.khronos.org/webgl/]. It’s a free web standard to use low-level 3D graphics right on the page via canvas element. It’s based on OpenGL ES 2.0 and has similar development approaches. To test if your web browser supports WebGL just go to http://get.webgl.org/. Almost all modern browsers and platforms support WebGL. It doesn’t need special plugin like Flash player or Unity.

The Platform

As WebGL is a cousin of OpenGL, it’s a cool 3D engine and 3D Application Development platform. WebGL is mostly used in Game Development and media projects. Nowadays, both the desktop and the mobile hardware is powerful enough to support GL technology to be runned into the browser. That’s why so many games are implemented as JavaScript solutions based on WebGL instead of well-known Flash. I’m not going to mark Flash as dying technology, but, objectively, WebGL is the future of the Application Development in rich web media and interactive animation.

Read more

Application Development: Vim as development environment

Vim [http://www.openvim.com/] is a successor of the ancient vi text editor, which was created as primary UNIX visual text editor several decades ago when computers were really big and expensive. Despite such a great age, Vim is still a very popular and useful tool in Software Application Development and DevOps. Both console and GUI versions are available for all operating systems and platforms. It’s included into any standard installation set of Linux/UNIX family system. Because of its plain nature, our programmers can use Vim as both regular text editor installed and runned locally and opened in remote shell via Internet with effective workflow even in case of slow network connection.




In brief, Vim has 2 main modes: to navigate a cursor throw the text and to enter the text into place marked by the cursor. This would be the most terrible barrier between you and Vim. Don’t fight it. Just accept this approach and move on.

Read more

Application Development: AngularJS framework

We already wrote about very popular front-end JavaScript Application Development approach Backbone. It’s not single right way to design and implement cool rich client side application without mess of code. There are other frameworks widely used. Nowadays, one of the most useful is AngularJS [https://angularjs.org].

 The idea

Main idea of Angular is to avoid modifying DOM by hand via JavaScript code. This way is very useful for web designers who can’t handle JavaScript as good as software developers or even can’t coding at all. Backbone uses behavior to drive the view, and Angular uses the view to drive behavior. First of all, Angular was created for fast prototyping rich web application and interfaces, but nowadays, it’s widely used in all kinds of projects. It’s not a kind of tutorial or introduction, but rather a set of several important points to understand Angular and use it in real projects.

Read more

Java Development: Guava – beyond standard JDK

Every modern software development stack has one or more well-known common libraries which is not a part of the language core. On the other hand, such general purpose package extends standard set of methods and data structures to professional level of software development. E.g., STL for C++ world. Apache Commons [https://commons.apache.org] is one of the most useful set of general libraries in Java Development. A lot of other packages and frameworks are based on them. In case of new project, Iflexion developers, first of all, to look at Guava [https://code.google.com/p/guava-libraries] — a modern professional implementation of common methods.

Guava libraries

Guava is done by Google, freely distributed and supported by Internet giant. They even claim Guava usage in their own projects as a standard. There are 3 main programming languages are used in Google: Java, C++ and Python. Guava is based on Java 6. That makes it useful in legacy projects implemented in terms of Java 6 and needed to support this version. E.g., strings join may be done in Java 8 as String.join(“, “, strings) or by Guava Joiner.on(“, “).join(strings). Guava modules are created with design patterns in mind. There are builders, factory methods, adapters, etc. Guava available via maven/gradle. E.g., for gradle:

dependencies {

compile ‘com.google.guava:guava:18.0′


Read more