29Feb2016

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
13Feb2016

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
27Jan2016

Application Development: Tweening and timeline are high abstractions in Web animation

Category: Uncategorized

Last month we implemented web solution with pretty outstanding animation. During looking for a framework to be used in our case, we found very robust set of libraries provided by GreenSock. Their products were very popular among Flash developer some time ago. E.g., module for Tweening, which is not just regular animation primitive, but customizable processes designed for really cool animation effects. These are widely used in Application Development to implement cool UI/UX or animation in a game. As web animation is moving from Flash to pure HTML/JavaScript, GreenSock team published their own package to cover almost any feature. They call it GreenSock Animation Platform or GASP [https://greensock.com/gsap].

 Platform and features

First of all, GASP supports all major web browser including even old versions (keep in mind IE as the main troublemaker) deprecated by other animation libraries. Such safe configuration is very important in professional Application Development at line of client satisfaction.

Read more
14Jan2016

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.

 

Features

 

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
20Dec2015

.NET Development: ASP.NET Web API 2 to implement robust REST services

Microservices [http://martinfowler.com/articles/microservices.html] is a server side architecture positioned as one of the most cool technical trends in 2016. There is still a lot of hype around it in all platforms and programming languages ecosystems. A composition of light services, each one handles its own task, may be implemented and then integrated and configured to work together are usually done by the same tiny web framework. It looks like small tool for small tasks. E.g., there are flask written in python, sinatra in ruby or node.js, which itself has a lightweight architecture and interface in design. .NET Development as robust mature technology has its own libraries to support new trends in server side programming. There is ASP.NET Web API 2 [https://msdn.microsoft.com/en-us/library/dn448365(v=vs.118).aspx]. It’s a new standard toolset provided by Microsoft for .NET Development community.

 New standard

Web API is already shipped with modern version of Visual Studio. Besides, it’s available for installation via standard NuGet package management system. Generally, there are a lot of tools to implement HTTP service: raw HTTP handler, WCF, asmx. We have been using all of them for years. Web API is outstanding enough to call it the best both as a solution and development process as a whole.

Read more
04Dec2015

Content Management: Static web site generated offline

From plain static to LAMP and back to static

A lot of years ago CERN engineers invent Word Wide Web technology as a linked set of plain text documents with links to each other and special formatting for visualization. Ancient Content Management was just an editing of static files on the disk. Times changed. We passed several huge revolutions in Web Development and Content Management. LAMP stack and its similar analogies based on other platforms were like standard for decades. We hold data and other content in relation database with SQL interface to access it. The pages have been treated as HTML content generated dynamically on server side by some engine implemented in a programming language with appropriate library or framework. All parts of this scheme have been re-designed or re-invented from time to time. Some of them even several times. There was a lot of hype about Web 2.0. For making development process more robust and performance of solution better, we started to use solution appropriate for specific task or project, e.g., MongoDB instead of MySQL, MVC instead of mess of code. One of such method is to present web site as a set of pure static web pages without any dynamic logic on server side, absolutely.

 Generate static content offline

Main idea of such approach is to have a project with sources like data, html templates or includable parts and containers to wrap all those elements together and configure navigation between pages. On another hand, we need a tool or even several utilities to build the project into destination representation of static web site. First time, our team experienced such technology in the Fitness project for very famous Top 50 public Web Portal 10 years ago.

Read more
19Nov2015

Application Development: LESS as more robust CSS3 development

Nowadays, nobody code raw CSS3 in real-world HTML5 Applications Development. Huge amount of monotonic repeated code is too hard to create and support. Usually, one of CSS preprocessors are used to implement CSS3 styles in more elegant way. LESS [http://lesscss.org/] is one of such approaches. It doesn’t need to spend a lot of time to start using it. Try online tool [http://lesscss.org/less-preview] to process LESS into CSS code.

 Really less

First of all, LESS is pre-processor of special syntax into CSS code. Besides, CSS code is a correct LESS code as well. You can start porting your existing pure CCS3 project into LESS just by a copy-paste action. When we mark some section or module with specified CSS class we are going to format and style not just wrapper but all its inside components as well. LESS helps us in this most used case by its nested syntax. E.g., LESS code:

Read more
03Nov2015

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
05Oct2015

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
22Sep2015

Application Development: Asynchronous JavaScript code by Promises

Both front-end JavaScript code and runned on server side node.js applications are designed not just a long-run set of instructions, but rather a set of functions, which are runned by the engine as handlers of appropriate events. E.g., user clicks the button, server received request from the client, page loaded, server started started. Any JavaScript engine is just very sophisticated implementation of Event Loop pattern. There is a lot of stuff written about V8 engine, which node.js based on. Such architecture has asynchronous nature by design. That’s why it’s very important to deal well with asynchronous Application Development for any professional JavaScript developer.

Callbacks and other approaches

The simplest native way to deal with asynchronous code is to use callbacks. It may be ok in case of small application or use case. On the other hand, in real life Application Development, Iflexion company have complicated huge solutions splitted into many modules and layers. To use pure callbacks in this situation is antipattern.

Read more
Pages:1234510...Last »