Friday, May 22, 2015

Sass which will make my life easy

3:16 AM Posted by Unknown 2 comments
Hi there, this will be my first blog update on GSoC project Askfedora redesign. For the project I may need to write all the styles from scratch for all the interfaces of AskFedora and I will be using sass, compass and susy in the redesigning process.

I am totally new to the languages Sass and Susy and to the framework Compass and hence I'm learning these from scratch. Here are some notes on using Sass I learnt which might be useful for anyone interested in styling. So here goes. :)

Before going into details you might need to have an idea about CSS prepocessing.

CSS Preprocessing

CSS as we all know is used for styling web pages. Many beautiful styles can be created with CSS yet when the style sheets are getting more larger they become more difficult to maintain. CSS preprocessing can help us here. 

CSS Preprocessors like Sass have many features which are similar to those offered in programming languages like Java or C. These features include variables, nesting, mixins (discussed later), inheritance etc. which we cannot see in CSS. These features make maintenance of our styles more easier which reduces most of the work for the programmers.

What is Sass?

Sass a CSS Preprocessor and is the mostly used most powerful professional css extension tool in the world.
When coding it will be filename.scss that we will be editing and sass converts to a css file.

Installation

Installing Sass only requires just require you to type in the following commands in the terminal. To install Sass you need to have ruby gems installed in your computer. The set of commands below take care of that also.

sudo apt-get install rubygems
sudo gem update
sudo gem install sass

And if Sass is properly installed we can view its version by typing in "sass -v". It should display something like the following.

Sass 3.4.13 (Selective Steve)

Coding with Sass

To experiment with Sass I created a simple style.scss file and in the terminal you need to type in

sass --watch style.scss:style.css

This is to instruct Sass to watch over the edits that are done to the style.scss file and every time a change is done to the style.scss file it needs to update a style.css file accrodingly.

Sample code with Sass

This is the sample code that I typed referring the Sass tutorial [1] at their site which includes many features of Sass which are
  • Sass variables
  • Nesting
  • Partials and require statement
  • Mixins
  • Inheritance
  • Operators
----------------- style.scss -----------------

@import 'reset'; //importing sass partials

/* Use of variables */
$font-stack: Helvetica, sans-serif;   
$primary-color: #333;

body{
    font: 100% $font-stack;
    color: $primary-color;
}

/* Nesting */
nav{   
    ul{
        margin: 0;
        padding: 0;
        list-style: none;
    }

    li{display: inline-block}

    a{
        display: block;
        padding: 6px 12px;
        text-decoration: none;
    }
}

@mixin border-radius($radius) {  //mixins
  -webkit-border-radius: $radius;
     -moz-border-radius: $radius;
      -ms-border-radius: $radius;
          border-radius: $radius;
}

.box { @include border-radius(10px); }

/* Inheritance */
.message{   
    border: 1px solid #ccc;
    padding: 10px;
    color: #333;
}

.success{
    @extend .message;
    border-color: red;
}

.error{
    border-solor: red;
}

.warning{
    @extend .message;
    border-color: yellow;
}


/* Creating a simple grid with sass operators */
.container{
    width: 100%;
}

article[role="main"]{
    float: left;
    width: 600px / 960px * 100%;
}

article[role="complimentary"]{
    float: right;
    width: 300px / 960px * 100%;
}

----------------- _reset.scss -----------------

html,
body,
ul,
ol{
    margin: 0;
    padding: 0;
}

The corresponding converted css file:

----------------- style.css -----------------

html,
body,
ul,
ol {
  margin: 0;
  padding: 0; }

/* Use of variables */
body {
  font: 100% Helvetica, sans-serif;
  color: #333; }

/* Nesting */
nav ul {
  margin: 0;
  padding: 0;
  list-style: none; }
nav li {
  display: inline-block; }
nav a {
  display: block;
  padding: 6px 12px;
  text-decoration: none; }

.box {
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  -ms-border-radius: 10px;
  border-radius: 10px; }

/* Inheritance */
.message, .success, .warning {
  border: 1px solid #ccc;
  padding: 10px;
  color: #333; }

.success {
  border-color: red; }

.error {
  border-solor: red; }

.warning {
  border-color: yellow; }

/* Creating a simple grid with sass operators */
.container {
  width: 100%; }

article[role="main"] {
  float: left;
  width: 62.5%; }

article[role="complimentary"] {
  float: right;
  width: 31.25%; }

/*# sourceMappingURL=style.css.map */

I would give you a briefing about the above code.

Sass Variables

First under the variables section we can declare Sass variables with a '$' mark infront of the name of the variable. For example if we want to use the same color in number of different places we can assign it to a variable and use it so that we only need to change the value of the variable if we want to change the color.

The variables are replaced by their corresponding values in the translated css file.

Nesting

Nesting is done to avoid complications, by having a clearly visible hierarchy. Like for instance instead of using "nav li" we can make "li" nested inside "nav" to make it more clearly visible and manageable.

Partials and Import Statement

Sass partials are used to include small sass code snippets inside scss files which starts with an underscore. The file names starts with underscore so that Sass will identify them as partials and include them in the scss files which import them.

Partials such as "_reset.scss" which I have indicated above can be included in your main scss files by importing them using the commands like:

@import 'reset'

Note that the underscore in front the file name and .scss extension is missing in the import statement.

Mixins

If you want to have a group of css statement together in many places we can use Mixins provided by Sass. In the above example we have a Mixin named "border-radius" which will accept a variable named "radius" and the same set of css codes will be repeated each time we include:

@include border-radius(10px);

Inheritance

The concept of inheritance that we come across in object oriented programming languages is applied for css styles also. In the above example all the styles which are applied for the message class will be inherited to error, success and warning classes also.

Operators

Sass has the following operators which we can deal with.

+, -, *, / and %

As you can see only the result of these operations will be displayed in the converted .css file.

References

[1] - http://sass-lang.com/guide
        Sass language guide 









Thursday, May 7, 2015

AskFedora UX/UI & Functionality Overhaul GSoC 2015 Project Proposal

6:32 AM Posted by Unknown No comments
AskFedora is a well known knowledge base to provide support for the Fedora users all over the world. It is also a support forum where we can question things and answer. The popularity of AskFedora with time has lead it to the point to have a complete UX and UI overhaul. Redesigning AskFedora has been an idea for Google Summer of Code 2015 which has open doors for the students to contribute in this project and I have got the valuable opportunity in getting selected to GSoC 2015 and contribute towards this project. Mentors Sarup Banskota and Suchakra Sharma are mentoring me in this project and I hope to deliver my best by working with them on this project.

The following is the project proposal which I have submitted and it includes a complete overview of how I am going to contribute in the redesigning process of AskFedora including the tentative timeline.

Project Proposal

Overview

Ask Fedora is a well known knowledge base to provide support for the Fedora users all over the world. It also a support forum where we can question things and answer as well.
As quoted from the Fedora GSoC project ideas page , "Over the years of its existence, AskFedora's popularity has increased and there are 11,000+ questions that have been asked on the website and has 12,500+ contributors as of today." This shows the popularity of Ask Fedora and with time it has reached to the point to have a complete UX and UI overhaul in order to provide a good user experience for the users.
Now the period where the programmers considered only the back end of the applications needs to be perfect is over. Currently numerous type of research activities are carried out in the fields of UX/UI and Human Computer Interaction to search means of providing better user experience. In such an era the need to provide a better user experience for AskFedora is critical.

Some drawbacks in the current interface design of AskFedora

  • Poor use of color schemes.
  • Lack of consistency thorough the site.
  • Lack of attractiveness.
  • Lack of a good responsiveness when it comes to small scale devices such as mobiles.
  • At the bottom of the footer the links to about, faq, help, privacy policy and give feedback seems unnoticed and rarely being used by the users.

What the project fulfills

  • The above mentioned problems will get solved and the users will be provided with a consistent and responsive interface to interact with AskFedora.
  • AskFedora will be attractive and uncluttered and will use a good color scheme which will make the user experience better.

Experience in me in order to meet the project requirements

  • I am a student in the Department of Computer Science and Engineering, University of Moratuwa (The most sought after university for Engineering studies in Sri Lanka) and I’m studying in the end of 2nd year with a Grade Point Average of 4.1 out of 4.2.
  • I have expertise in languages HTML, CSS, PHP, Javascript, Java and C and I am currently mastering Python and DJango Framework which is necessary for the development of this project.
  • I have applied MVC architecture in my web based projects and I have knowledge in Symfony which is also a framework based on MVC architecture. As DJango is also a framework based on MVC architecture, my knowledge about MVC will be useful here.
  • I have built web sites using HTML, CSS, PHP and Javascript (One of the hosted web sites : Desolator Tank Game)
  • I am currently learning how to develop responsive websites.
  • I have sufficient knowledge about the Git version control system and has used Git for many of my projects. My GitHub account: GitHub
  • I have been in the mentoring program for GSoC 2014 which was held in our university in order to provide pre-knowledge of the importance of contributing towards FOSS development and how to make myself present in the mailing lists etc. I was mentored by Mr. Andun Sameera Liyanagunawardana who was a 2 times GSoC winner and an active open source contributor. (You can view his recommendation on me on my linkedin page here: LinkedIn )
  • I have my blog here at Blogger. I have written articles about Cloud Computing etc. on my blog and I am willing to blog about the progress of this project continuously.

Final Deliverables

  • The main of this project is to improve the UX/UI of AskFedora and the final outcome of this project would be a consistent, totally responsive complete overhaul on the UX/UI of AskFedora with complete rounds of testing and bug fixing.
  • Future development might include doing a research on the use of AskFedora by using a web analytic tool and find the areas which are most frequently used by the users and the areas which seems to be getting unnoticed etc. and do further improvement by using the results.
  • Project documentation listing all the things that I have done in accomplishing the project targets. (This can be included in my blog at Blogger)

My current approach towards the project (Within 4 days of time from 22nd March 2015 to 25th March 2015)

  • I have studied the mockups provided regarding the project and have built a rough web interface according to them. You can view it at OpenShift.
  • I have also built an interface for the User Profile page of AskFedora on a mobile scale. You can view the code here at GitHub
  • And in order to get familiarized with the askbot code base I have a cloned it from GitHub
  • I have installed OpenShift rhc Client Tools and have learnt to create a new Python web project using that.
  • I have also cloned the source for testing repository from GitHub.
  • And I have learnt to communicate in mailing lists and IRC channels as well by subscribing into the Fedora summer-coding mailing list and Fedora developers mailing and as well as to the IRC channels.
  • I have communicated with the mentors Sarup Banskota and Suchakra Sharma via mailing lists and via IRC and got to know more about the project and the technical things that I need to master in developing this project.
  • And I have studied the AskFedora redesign plan as provided in the following document

How I plan to implement the proposal in sync with the redesign plan given

Stages of implementation

As also highlighted in the redesign-plan, the main approach for the project would be simplified as the following:
Step 1:
  • Analyze the current UX of the system, identify the drawbacks of the current system and discuss the possible improvements.
  • This step includes identifying the user profiles and the problems faced by them with the current design of AskFedora.
The user profiles include:
  • The Seekers – People with specific questions to ask and who will land directly on the main page or on the question page of AskFedora.
  • The Contributors – People who want answer the user problems. They will be mostly using “Profile” and “Tags” pages in order to find areas which they want to answer.
  • The Surfers – These are the people who land directly on the “Questions” page as a result of searching something via a search engine like Google and who may not want to sign up or login.
Step 2:
  • Further develop mock ups for the pages. Analyze the mock ups, discuss their drawbacks and get the mock ups finalized.
Step 3:
  • Develop the designed interfaces using HTML, CSS, Java Script and Python and with good responsiveness and consistency.
Step 4:
  • Integrate them with ASKBOT
  • Identify the bugs and resolve them.

Technical Details

  • Use of OpenShift (The Open Hybrid Cloud Application Platform by Red Hat) which is a cloud based service where I can host my applications in the public cloud and share my designs with the team.
  • Use of mock up design open source tools like Inkscape.
  • Use of Libreboard (An open-source kanban board) where the team can organize things in cards, and cards in lists that will give a better overview of what is completed, what are the things on progress and what are the things to be done.
  • AskFedora is powered by AskBot which is a DJango based web application where Django is a free and open source web application framework, written in Python. DJango follows the model–view–controller architectural pattern. And I would be studying the DJango framework and will be working with it when integrating my designs with the AskBot.
  • Languages that can be used in the development process: HTML, CSS, Javascript, Saas (A css preprocessor where we can use features that don't exist in CSS which makes the code more simpler with the use of variables, nesting, mixins, inheritance etc.), Python.
  • Further Compass (An open-source CSS Authoring Framework which works with Saas) can be used as a mixin library with Saas which will provide cross browser compatibility so that we will not have to handle CSS hacks.
  • Also Susy (A Compass responsive grid plugin) can be used to produce responsive web pages more easily by following a bottom-up approach (Doing the interfacing of the mobile devices first and moving into larger screens) in designing the web interfaces.

Timeline

I would like to start having a look and master the technical stuff that I need to fulfill even before the Community bonding period starts.
So, my timeline goes as follows:

Upto the start of Community Bonding Period (28th of March - 27th of April)

  • Getting familiar with Python and DJango web application framework
  • Gain knowledge in Saas, Compass and Susy
  • Getting familiar with the development environment of AskBot
  • Understand the AskBot pages flow and possible improvements
  • Learn responsive web design in detail

Community bonding period (28th of April - 25th of May)

  • Discuss further about the redesign plan of AskFedora via mailing lists and communicating actively in the IRC channels
  • Present my ideas on how to change the current design of AskFedora reflecting my own ideas.
  • Present what I have already done with the design of AskFedora web interfaces and mock ups, receive feedback from the mentors and further carry on development work on the mock ups and interfaces according to their feedback.

Work Period until mid-term evaluations (26th of May – 26th of June)

  • Week 1-2
    • Finish doing mockups for all the pages in AskFedora and get them finalized.
  • Week 3-4
    • Code the UI for the mockups.
    • First finish with the responsive UI for the Main page and Q/A page and integrate them with the AskBot.
    • Testing and bug fixing.
  • Week 5
    • Start coding responsive UI for the other pages.

Period of submitting mid-term evaluations (27th of June - 3rd of July)

  • Completing and submitting mid-term evaluations.
  • Carry on coding responsive UI for the other pages.

Work Period (4th of July – 8th of August)

  • Week 1
    • Complete coding responsive UI for all the other pages.
  • Week 2-3
    • Find and code the separate and individual left out elements
    • Integrate them with AskBot
    • Testing and bug fixing
  • Week 4-5
    • Final integration with AskBot
    • Testing and bug fixing
  • Week 6
    • This week is allocated in case of emergency reasons that I would not be able to complete some work within the schedule.
    • Apart from the above I will be continuously blogging about the progress of the project and the work I do and on this week I will spend my time refining the content in my blog.

Other Information

Potential Risks and how I am going to avoid the risks

In case I will not be able to complete work within the schedule on time.
  • In case this happens I will allocate double the time I am going to allocate on working on this project in the next stage and complete the missed work as soon as possible.
  • And also I have created the timeline so that all the work is completed a week earlier than expected so that if there are work that I could not complete on time I will be able to complete those work during that last week.
Laptop break down.
  • The Department of Computer Science and Engineering in University of Moratuwa is very much helpful for the students and therefore in case of such a situation they are willing to provide laptops to students for free. Hence I can ask for a laptop from my Department and work on it.
  • Also I am living very close to my university (University of Moratuwa) and I can use the computer labs in our Department until late night.
  • I will commit and push all the work I do daily to GitHub so that way any of the work I will be doing on the project will not be lost.
Loss of internet connectivity
  • My university has free wifi connectivity all throughout the day and hence in case I lose my internet connectivity provided by my service provider I can immediately get to my University and work using wifi connectivity.

Miscellaneous Information

  • I am very much capable of managing my time and hence I will be able to manage my time effectively and meet the project targets and deadlines on time.
  • As I have great passion and interest towards UX/UI I will be very much willing to learn new things related to them. As I will be working on things I love it will not become a stress or a burden for me even though the hardness or quantity of work that I will be doing become high.
  • And also my department in the university is spending time and money in organizing programs to encourage students to participate in GSoC and FOSS development activities. In case I get to contribute towards this project I would also get a chance in talking to the other students about this project and my contribution towards it. I would also encourage the students to contribute towards design and development activities in Fedora and make them aware of the importance of contributing towards open source software.

Attachments

  • The first one below is the interface I created by referring the mockups provided. You can view it onOpenShift as well.
  • And the second one is the mobile interface I created for the User Profile page.
You can view the code for the following at GitHub
I am currently learning about how to develop responsive web sites and while learning I am going to make these responsive as well. I will commit all the work I am doing in the designs of the web interfaces to my GitHub repo regularly.
alt AskFedora UI test
The mobile interface for the AskFedora User Profile page.
alt AskFedora Userpage

 

 

Friday, January 2, 2015

Cloud Computing

7:10 PM Posted by Unknown No comments
People have big ideas, to promote their business and to uplift their sales and production. For these, people might need business apps. Yet the chaotic situation is that those business apps are highly expensive. And also they might need physical resources such as power, data links, networks, bandwidth, servers, office space and storage. Software wise they might need a big software stack and a team of experts who can run and manipulate this software.

Yet even with all these resource on hand, there can occur problems such as when new versions of the software that are already used by the business comes, the entire system may crash due to such software upgrades due to the incompatibility with the other software components in use.

Hence cloud computing is a better way to run a business. Instead of running the apps by the company, the apps run on a shared data center. The business just has to get plugged in as a utility. This makes it fast to get started and it cost less. It is like gmail when compared to Microsoft exchange. With gmail we do not need any servers or storage, we do not need a technical team to keep it up and get running and we do not need to do any upgrades. For any app which is running on the cloud, we need to log in, customize it and start running it.

Cloud computing offers us not only consumer apps but also business apps. This has given rise to enterprise cloud computing. They cost extremely less because the business  do not need trained people to run these software and it cut down the cost to train people to have expertise in various kinds of software. And the cloud based business apps are more scalable, more secure, more reliable than majority of business apps that are available in the market.

Cloud computing is based on an architecture called multi-tenancy. It provides one app for all the businesses using it to share. But in the mean time the app is flexible to be customized by everyone who uses it. So, the application is able to scale up for thousands of users or down only for few. And the business owners do not need to upgrade the system because all the new features, performance and security get automatically upgraded which saves a lot of time and effort.

And the way the cloud apps are being paid is also different. We have to only pay for what we use. It is actually a reliable, safe and economical way to carry out the business because these cloud apps do not waste the valuable IT resources of the company but instead give a valuable service for low cost. Hence the employers and employees can focus mainly on the projects that are undertaken by the company instead of worrying about hardware and software resources. The projects are the main areas that have a major impact on the business and the employees are freed to focus more on these aspects increasing the company profit.     

This is how a simple idea like sharing resources and services via internet and the cloud has a huge impact on the bottom line. Cloud computing is big than we think and it is growing bigger and bigger every day.

When the physical equipments available cannot meet the demand, we tend to move towards cloud computing. In early days when the company web site got popular, the company may have bought several servers to run the web application. This is known as hosting which takes up a lot of money and time.

One of the major problems of doing this is that you need to pay for them when you are using them and even when you are not using them. But now we have a better option which is cloud computing where you get access to computer power instantly when you need it. When the demand rises we can scale up for the increasing demand instantly when using cloud based server to run our web application. On demand we can get the computing power as much as it is needed. And the main advantage is that the customers can experience the web application without noticing any difference whether it is run on a cloud server or a normal server. And if the internet traffic slows down for the web site, the owners can release some of the unwanted servers without any effort.      

Using a personal computer we can remotely access and control the cloud server and can disconnect it when we do not need the service.

There are three reasons why cloud computing is getting more and more popular. They are:
·         Scalability
The services provided in the cloud are easily scalable to match the demand. They can grow and shrink instantly with the demand without causing any problem.
·         Instant
Hosting in the cloud is instant and all the other services in the cloud are also instantly available.
·         Saves money
We have to only pay for what we use which increases company profit cut down loses.

People can gain many benefits out of cloud computing rather than using physically available resources. Such benefits include:
·         The company can recruit more workers from all around the world because the resources are available on the internet.
·         Of course as was repeated over and over again in the former parts of the document, cloud computing cuts down cost which is spent on infrastructure. And we have to pay only for our usage on a weekly, quarterly or an yearly basis based on the demand.
·         And the company gets improved accessibility for the resources because they are available online at any time and they can access those resources from anywhere in the world.
·         The managers of the companies may get time and freedom to monitor the projects more frequently and effectively.
·         And also cloud computing improves flexibility because they can change direction they are currently following without serious financial and workforce issues at stake.

In the past cloud computing was sort of like a dream that was difficult to achieve. Yet today it has become a reality with so many benefits allocated for the users. According to Wikipedia it says that,

“Cloud computing is computing in which large groups of remote servers are networked to allow centralized data storage and online access to computer services or resources.”

which defines cloud computing more formally. The best known example of cloud computing can be sited as “G-mail”, the emailing application provided by Google. It is the most popular online emailing service available and almost two third of the people in the world uses that service to send and receive email messages instantly.

Cloud computing provides us with three different cloud computing service models. These are,

·         SaaS – Software as a Service
·         PaaS – Platform as a Service
·         IaaS – Infrastucture as a Service

These three layers are encapsulated by a user layer.

Cloud deployment models include public, private and hybrid (a combination of public and private) deployment models.

SaaS

The simple definition of SaaS is that this comprises of hosted applications that are only accessible via a browser. In SaaS, the vendor develops and operates the software application for use by it customers through the internet. Examples of SaaS may be G-mail, hot-mail and Google docs. And one of the most prominent Software as a Service provider is “salesforce” which provides efficient services for enterprise level businesses. SaaS is what we really use as consumers.

PaaS

PaaS is responsible in providing an environment that helps the life cyle of application development available over the internet. It inlcudes a hosted development platform for deploying SaaS Apps. So, we can directly deploy software as a service apps from the platform in the cloud. One of the service providers for PaaS will be the popularly known “Windows Azure”. And the “Google App Engine” and “apache Statos” can also be sited as examples. Developers are the ones who mainly consume PaaS.

IaaS

In IaaS, we pay for the use of IT resources instead of owning them. This provide basic computing abilities, computational power and storage over the internet as standardized services. So, for example if a company needs a server for few months, instead of spending a lot of money and get themselves allocated a server, the company can contract with some online service provider such as Amazon and ask for computing power for those few months and pay for what they use. “Amazon web services” and “rackspace” can be sited as an examples for IaaS. IT or co-operate departments use IaaS mostly.

Types of PaaS

The main types of PaaS are,

·         Application development
·         Intergation
·         API
·         Devices

App Dev Clouds

App Dev clouds is an abbreviation for Application Development Clouds. These provide mechanisms for us to develop our own Web or Mobile App using cloud based services within minutes of time. They have ALM or Application Life-cycle Management tools which are in-built in the cloud for App development purposes. And they provide services like versioning, and support for continuous builds, continuous integration and team collaboration.

Integration Clouds

Integration has become a main obstacle in deploying Software as a Service and other web applications. Hence software integration services are also provided by the cloud itself to integrate enterprise applications via the cloud. Cloud interconnects the systems to achieve business flow control.

Recent surveys also state that integration between SaaS and legacy software applications is a major concern which is only second in priority to data security and privacy. The development of cloud computing models like the PaaS and IaaS, has contributed to the growth in popularity in cloud computing and hence nowadays additional data and processes are also moving to the cloud. Due to such recent developments in cloud computing, developers may have to think of how their applications are going to communicate with each other and may have to decide how they are going to integrate within the cloud ad between the cloud and the enterprise.

Due to the challenges faced by the developers in such integration issues, cloud computing has come up with solutions like Integration Platform as a Service (iPaaS) for providing integration services as a standalone platform.

API

Cloud APIs or Cloud Application Programming Interfaces are available online for building of cloud based applications. As cloud computing has grown so fast that most of the commonly used Apps and functionalities are already implements, the developers are able to reuse those already implemented functionalities through an API easily. So, the developers have to only get the API and customize those to suit their need.

Cloud has APIs to integrate with other platforms. There are four main types of APIs available. These are:
·         PaaS APIs which run at the service level
·         SaaS APIs which run at the application level
·         IaaS API which run at the infrastructure level
·         Cloud provider and cross-platform APIs


Depending on the user requirement he may have to select one of these APIs or may need multiple different API models. As those services are quite new there are still issues and problems occurring with regard to areas such as platform and infrastructure compatibility.   

This area has grown so fast that several market leaders have emerged in the cloud API race. Some of the few marketing leaders in this race can be listed as
·         Apache CloudStack
·         Amazon Web Services API and Eucalyptus
·         Google Computer Engine
·         Simple Cloud
·         OpenStack API
·         VMWare vCloud API

It shows signs that cloud computing API model will continue growing because most of the organizations are looking forward in getting efficient ways to connect their environments together.

Devices

Cloud computing devices are the devices via which we can access services in the cloud. For example mobile smart phones, PCs and tablets allow us to use cloud services such as reading and sending email. A popular example is using popular sharing applications such as Dropbox on the mobile device or in a desktop machine.

All such devices are connected to the cloud. And now a new concept known as the IoT or the Internet of Things is emerging in the field of Computer Science. In this everything including what we are wearing are connected to the internet and exchange information with the internet. This might be another good way for cloud computing as well to expand their horizon.

BaaS

BaaS which is also known as Backend as a Service is also another cloud computing service model that exist except for those listed above. BaaS serves as the middleware which provides developers with ways and means to connect web and mobile applications to cloud services through an API(Application Programming Interfaces)  and SDK(Software Developer’s kit).

BaaS is a rather new to the arena of cloud computing and hence is provided by a limited number of providers.

Cloud IDEs

Now even cloud IDEs are also available in the cloud. This has drastically changed the convectional desktop-based software usage to cloud based IDEs which are available any time on the cloud. Even we as students are now using version control systems like GitHub which are freely available services on the cloud. So, even though cloud based IDE usage is not very common among us and people show some reluctance in totally relying on cloud IDEs for their product development, in the near future this situation show signs of change.

Examples of some of the best cloud IDEs in use today are,
·         Cloud9
·         Codeanywhere
·         Cloud IDE
·         Sourcekit
·         Kodingen
·         Coderun Studio

Why cloud computing?

With all those benefits listed above many of the businesses uses cloud computing today either directly or indirectly. This is mainly due to the reduction of costs, availability around the clock, universal access, access to software which is ungraded and up to date, the different choice of applications and the flexibility.

Cloud computing is efficient and reliable and acts as portal which bridges new technologies and people all around the world. Today a newly starting business may not require to have better infrastructure available but it will be able to proceed with the help of cloud computing and compete with other large business organizations. This gives hand to small businesses to access various types of technologies which are thought to be out of reach.

Cloud computing apps make integration easier, it provides a platform for the employees to work in, to share things and communicate. Even the day today apps which we are using like Gmail, Outlook Online, Flickr and Google Maps are cloud based. And unknowingly or knowingly we might use numerous different cloud computing applications.

The word “cloud” may be new to us but we are actually a part of it. The cloud provides us with a centralized location on the internet which we can store our data and access anytime from anywhere. We just simply need internet access and even via a small device like a smart phone which most of us have today we can access the cloud. So, watch for even more advancements in cloud computing and keep your eyes open for more.     

References

        Cloud computing, Moving IT out of the office by The Chartered Institute for IT.


Labels