• Software development

    Dependency inversion using Ports and Adapters architecture

    Over time core business logic of an application becomes tightly coupled with various libraries, frameworks and technologies making it harder to evolve and test. It becomes challenging for long lasting product that needs to keep up with changing customer needs and evolution of technology.  Ports and Adapters Architecture (Alistair Cockburn), also known as Hexagonal and Plug-in architecture, can help by

  • Software development

    Ten basic AngularJS concepts for beginners

    This code snippet introduces 10 basic AngularJS  concepts for beginners by building a very simple application. The application enables users to maintain a to do list with basic add, edit, and remove features. Additional features include sorting, ability to mark each item as complete etc. In this application, following concepts are introduced: angular.module, ng-app, and ng-controller: setting up the bare-bone structure…

  • Software development

    How TDD and BDD complement each other?

    Test Driven Development (TDD) and Behaviour Driven Development (BDD) are the most widely used technical practices in agile software development. These two automated testing approaches are not alternative to each other but complement each other by addressing software quality from a different angle. To understand the unique strengths of these two practices, let’s think of the journey a user story…

  • Software development

    WeatherTreand – a hybrid mobile app

    This Android app was developed as an example to show how hybrid apps can be developed using web technologies. The app was developed using HTML5 and various Java Script libraries based on the PhoneGAP shell for Android. This single screen app shows the current weather condition with five-day forecast. Several APIs were used to make this app functional: Cordova to…

  • Software development

    What is a hybrid mobile app?

    Hybrid is an app development approach where only a bare minimum shell of the app is developed using native programming language and most of the app logic is implemented using web technologies (HTML5, CSS3, and various Java Script libraries). Basically, the native shell provides an embedded web browser or container to  load the HTML-based app UI. Hybrid approach is becoming…

  • Software development

    Agile reference cards and glossaries

    DZone Refcardz series has 6 reference cards relating to various agile methodologies and practices. These might be useful for high-level overview and quick reference: Agile Adoption: Improving Software Quality (link) Agile Adoption: Reducing Cost (link) Agile Adoption: Decreasing time to market (link) Scrum (link) Getting Started with Lean Software Development (link) Getting Started with Kanban for Software Development (link) There…

  • Software development

    Visual Agile Language

    Visual Agile Language or Visual AGILExicon© is a collection of icons and pictures that represents most of the Agile/Scrum concepts and activities. Each of these images explains the relevant concept or activity in great clarity. This collection is a great resource for preparing training and process related presentations for both new and experienced teams. Visual AGILExicon© is developed by Kenny…

  • Software development

    Data visualisation in HTML5

    The availability of canvas in HTML5 enabled the development of visualisation libraries for rendering charts/graphs in native html without any plug-in dependencies (e.g., Flash, Silverlight, Java Applet etc.). Among the freely available libraries, both jqPlot and RGraph are very comprehensive and intuitive to use. jqPlot is basically a jQuery plug-in that renders charts based on JSON data and has support for…