Wednesday, April 19, 2017

Front-end Development Frameworks



A front-end web development framework is simply a collection of production HTML/CSS/ JavaScript components that we can use in our designs. Nowadays, there are so many front-end frameworks. But number of really good once can be narrowed down to just a few. Here is a list of front-end frameworks that attempt to solve most of the web design problems of modern times.  

  1. Bootstrap

Bootstrap was developed by Twitter developers and released for use in 2011 as open source framework. As of today, bootstrap is the most used frond web development framework in the world.
           Bootstrap is a powerful framework to build mobile responsive websites of all sizes. The best thing about bootstrap is that it is continuously upgrades by bootstrap developers. Bootstrap is ideal for the beginners and those who prefer a robust front-end framework.

Here are some resources to you to get started with Bootstrap,

      2. Materialize CSS

Materialize is a modern responsive front-end framework which implements Google's material design specifications. MaterializeCSS comes with ready to use buttons, cards, forms etc. It is offered in both standard version and in one that runs on SASS. 
                                                                                          There are some additional features including ripple effect animation, drag-out mobile menus that are in materialize.Materialize is ideal for the experienced developers who needs guidance regarding Google's material design specifications. 

Here are some resources to you to get started with Materialize CSS,
        
      3. Semantic-UI


Semantic-UI is a newcomer to the scene, which gives a tough competition to the popular frameworks like bootstrap. The adoption and the support of this framework is increasing as a faster pace.
                 Semantic-UI's main claim is it's simplicity. Even those who are with very less coding experience will feel fairly at home working with this framework. Semantic's class names are bit easy to understand by reading, so the beginners can hit the ground easily. But those who are with complex designs and developments, might find this framework lacking. Ideal for the beginners those who want a light weight framework.

Here are some resources to you to get started with Sementic-UI,

      4. Foundation 


The Foundation framework defines a base layer of Objective-C classes.It provides a responsive grid and HTML and  CSS UI components, templates, code snippets etc. Foundation was maintained by ZURB and it is open source.
                                                             Foundation was designed for and tested on numerous browsers and devices. This feature-rich framework was used in may sites like Facebook, eBay and Firefox. So it is bit fairly complex. When using Foundation there's no lack in styles. But it is too bit complex for the beginners. So Foundation is ideal for the developers who have decent amount of experiences.

Here are some resourcese to you to get started with Foundation,

     5. Material-UI



Material-UI is a set of React components that implement Google's Material Design specifications. Out of so many frameworks, material-ui has most refined implementation of Material Design. It is highly customizable and it includes styles that are separated into individual files. So you can override less css variables without affecting framework components. Material-UI is mostly suitable for the developers who have experience and understanding about React.

Here are some resources to you to get started with Material-UI,
    
     6. Angular Material



Angular material is and angular-native, UI component framework from Google. Material Design is the soul of Angular Material and it makes great design the default. Layout in Angular Material is sensible and easy to articulate.

Here are some resources to you to get started with Angular Material,


The following list shows the amount of GitHub stars each project had the time of writing this post,


  • Bootstrap : 109,580
  • Materialize CSS : 25,934
  • Semantic-UI : 34,158
  • Foundation : 25,284
  • Material-UI : 24,842
  • Angular Material : 8,335


As you see, now there are many different front-end frameworks with different features in the technical world. So then, before selecting a framework for your application, first consider about your skills as well as the requirement of your project. 

If you guys would like to share any thoughts about this post with us, comment below. Good Bye :)

Sunday, January 29, 2017

Android Operating System


Building mobile applications can be as easy as opening up the IDE, throwing something together,doing a quick bit of testing, and submitting to an App Store – all done in an afternoon.Or it can be an extremely involved process that involves rigorous up-front design, usability testing, QA testing on thousands of devices, a full beta life cycle, and then deployment a number of different ways.In this post we are going to brush up our knowledge about android operating system.

What is Android?

                               Android is a mobile operating system developed by Google, based on Linux Kernel and designed primarily for touchscreen mobile devices such as smartphones and tablets. Android was developed by the Open Handset Alliance, led by Google, and other companies.
                 The first beta version of the Android Software Development Kit (SDK) was released by Google in 2007. After that the first commercial version, Android 1.0 was released on September 2008.On 27th of June 2012, at the Google I/O conference, Google announced their next android version, 4.1 Jelly Bean.

Android Applications

                                 Android applications are usually developed in the Java language using the Android Software Development Kit. Once developed, android application can be packaged easily and sold through a store such as, Google playstore, SlideMe, Opera mobile store, Mobango, F-droid and the Amazon appstore.


Android powers hundreds of millions of mobile devices in more than 190 countries around the world. It's the largest installed base of any mobile platform and growing fast. Every day more than one million new android devices are activated worldwide.


Android Versions

Code names of android ranges from A to N currently, such as Aestro, Blender, Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice cream sandwitch,Jelly Bean, Kitkat, Lolipop, Marshmallow and Nougat. API level is an integer value that identifies the framework.


Android Architecture 

Android operating system comprise of different software components arranges in stack. Different components of android operating system are

     1.Linux Kernel
 
Linux Kernel provides a level of abstraction between the device hardware and it contains all the essential hardware drivers like camera, keypad, display etc. And it handles all the things that Linux is really good at.
     
     2.Libraries

It provides the different libraries useful for well functioning of android operating system. These libraries are java libraries built specific for android operating system like SQLite, SSL, OpenGL, Media framework, Webkit etc. 

    3.Android Run time

It provides the most important part of android called Dalvik Virtual Mechine. It is similer to JVM, but the different is that is is designed and optimized for android. Dalvik virtual mechine uses some core functions of  the linux.

    4.Application framework

It provides many high level services to applications in the form of java classes. Application developers are allowed to make use of those services in their applications.

    5.Applications 

We'll write our applications to be installed on this layer only.



Some interesting facts about android


  1. Currently android is running in 25 billion mobile handsets.
  2. Android is the most popular mobile operating system.
  3. Android versions are names alphabetically and all the names are eatable food items.
  4. Android development is carried out by Google inc which Acquired Android Inc., A Small Startup, in 2005.
  5. Apple and Windows Phone Are Android’s Biggest Competitors still market share of both apple and window together is far behind android.
Hope you guys got a clear idea about android operating system,If you guys would like to share any thoughts about this post with us, comment below. Good Bye :)


Tuesday, October 25, 2016

Agile Software Development Method

When developing a software, it's not easy to deal with the client and changing environment. We have been introduced to many software process models such as waterfall, prototype, incremental, agile etc. We are hoping to talk about all these in our blog. But for now we'll brush up your knowledge on agile software development.

History

        On February 11-13, 2001, a group of 17 software leaders met at the Snowbird resort in Utah and discussed about the "light weight" development methods, and that's how manifesto for agile software development published.


Why bother?

                                                                              
           Agile software development is a group of software methods including 
  • Extreme Programming (XP)
  • Scrum
  • Crystal
  • Dynamic System Development Method (DSDM)
  • Lean Development and Future Driven Development (FDD)
Above mentioned agile development methods are kind a popular these days to build the right software at the right time. Even though all these methods are unique in their own way. They all have continuous planning, continuous testing, continuous integration and other forms of continuous evaluation of both projects and the software in common.


 Figure 1: Life cycle of agile software development method

Characteristics 

  • Warmly welcome changing requirements even late in development
  • Customer Concentric Software Development methodology  
  • Light Weight Software Development Methodology which is less document centic 
  • Usually work bet for small team sizes (<15)

Agile Manifesto 

Individuals and Interactions over process and tools Working Software over comprehensive documentation Customer Collaboration over contract negotiation Responding to Change over following a plan
"That's while there is value in the items on the right , we value the items on the left more"
Individuals and Interactions 
  • Self-organization and motivation are important
Working Software
  • Working software works than pieces of papers when presenting to the clients.
Customer Collaboration
  • Human mind changes continuously so do clients requirements.Therefore continuous customer or stakeholders involvement is very important. 
Responding to Change
  • Agile Methods are focused on quick responses to change and continuous development.

Agile Principles


Agile Developing Method based on 12 principles.
  1. Customer satisfaction by early and continuous delivery of valuable software
  2. Welcome changing requirements, even in late development
  3. Working software is delivered frequently (weeks rather than months)
  4. Close, daily cooperation between business people and developers
  5. Projects are built around motivated individuals, who should be trusted
  6. Face-to-face conversation is the best form of communication (co-location)
  7. Working software is the principal measure of progress
  8. Sustainable development, able to maintain a constant pace
  9. Continuous attention to technical excellence and good design
  10. Simplicity the art of maximizing the amount of work not done is essential
  11. Best architectures, requirements, and designs emerge from self-organizing teams
  12. Regularly, the team reflects on how to become more effective, and adjusts accordingly

Drawbacks 


Everything has drawbacks so why not in Agile Developing Method
  • Agile methodologies can be inefficient in large organizations and certain types of developments
  • Team members' mind set should be set into that this Software Product has no end
  • Since this Method is new most of the team members don't have good knowledge about this.
  • Most of the time teams members might spend more time on planing at the very first place due to not familiar to the Agile method
  • Attempting to take on too much in an iteration is an another failure. Even though Agile development method allows continuous changes, having too much works in progress results inefficiencies.

Overview 


Agile Software Development is 
Philosophy + a set of Guidelines for software development.
P :
  • Customer Satisfaction
  • Early incremental delivery
  • Small, highly motivated project team
  • Overall development simplicity
  • Less paper works
G :
  • Active continuous communication and collaboration between developers and users.
Here's a video which will give you an idea about Agile Software Development Method in a graphical way.  




Hope you guys got a clear idea about Agile Software Development Method. If you guys would like to share any thoughts about this post with us, comment below :)