Sunday 17 July 2011

The End

Client Server applications was an interesting and challenging module, but everything comes to an end one day or another. The course material provided by our tutor was very deep and well explained. The lectures were a two way discussion, and all of us shared our experience and knowledge with each other.


This module was awesome, and great thanks goes to our tutor...

Destination - Cloud

Introduction

No matter how complex is your network infrastructure, you can always create a network diagram of your organization; if you spend some time mapping computers and network devices. Usually such diagrams list, all computers, switches, routers, firewalls and all network devices; they also include information on your LAN and Demilitarized Zones (DMZ) if exist. The complexity of the diagram depends on the organization size, and usually mapping is done from client computers to the organization firewall.
What's outside the firewall is normally referred to as the Cloud. In networking diagrams, the cloud notation is used to represent very large networks that cannot be mapped due to their size and complexity; the Internet.

Cloud Computing

Nowadays, Wireless Network (WiFi) and mobile technologies enable web users to easily connect to the World Wide Web (WWW) from anywhere and from various electronic devices. The idea of having the Internet in the palms of your hands evolved, today various services exist that enables users to upload their data on a pay-per-use or storage space basis.
Such Services amongst others provide the following:
  • Web hosting capabilities – users can upload and publish their own web site.
  • Mail facilities – users can send and receive emails from any Internet Browser. Emails are not downloaded on the client machine, all emails are stored online.
  • File storage – users can upload documents, images and other file types online.
  • Virtual environments – developers and software testers can create virtual machines for testing purposes.
  • Processing and computational capabilities – applications are hosted online, all processing is done on the hosting server. Using thin clients, users connect and access the hosted applications.
The idea of uploading your data online, may lead to security concerns; organizations can loose intellectual property if the hosted servers are compromised. Loosing your data may lead to loss of confidence, loss of business and bankruptcy. The key question is, how can I trust a foreign entity to take care of my precious data?
There is no straight forward answer to this and unfortunately, organizations must investigate and research to find a trustworthy provider. The peace-of-mind is that data security is one of the key objectives of hosting providers, keep in mind that if data is leaked, these providers will loose credibility and confidence leading to immediate bankruptcy.

Why not?

Some of the most common questions users ask regarding cloud computing are:
  • Now we have cloud, where is my data stored?
  • Can the provider view my data?
  • Can provider view and forward my emails?
  • Is my web site safe?
  • Can someone delete or copy my data?
  • Do they have a backup of my data?
  • If something happens to the servers, my data is lost?
These questions are all valid, reason being that nowadays most users are aware that their data is priceless. These questions are the key features that an organization must investigate when searching for a trustworthy provider.
From the organization side, for some degree of security some suggest to: encrypt data prior to upload and decrypt on download. And to split your data in two and upload on two separate service providers, if one service is compromised 50% of your business is at risk; still is too much.

Nest stop...the cloud

Some of the benefits of cloud computing:
  • Your data is stored in replicated data centers. Data centers are protected against physical threats and if disaster strikes, data is replicated in other geographical sites.
  • Users can add processing power and storage space instantly with no hardware cost. Upgrading your service is not free, but when comparing hosting online with hosting locally, hosting online is cheaper.
  • Hosted Servers are virtual, hardware maintenance is minimized.
  • Access servers, machines and data from anywhere.
  • Enables usage of thin clients when using hosted processing power.
  • Using online storage for backups, is the most recommended countermeasure when dealing with disaster recovery plans.

Providers

Suitable for organizations
Name
Link
Services
Amazon
http://www.amazon.com/
Provides computing capacity and simple storage.
AT&T
http://www.att.com/
Pay-as-you-go access to virtual machines and storage.
Google
Office tools (email, calendar, word processing), simple web hosting and the Google App Engine.
GOGRID
Web-based storage and Virtual servers; including Apache, PHP, MsSQL and MySQL.
Microsoft
Azure, a windows as a service platform and Web Hosting applications.
NETSUITE
CRM, E-commerce and ERP tools.
Rackspace
Web hosting, file storage and cloud servers.
Salesforce
CRM tools, building web applications and web hosting.
Information collected from Network World

Suitable for home users
Name
Link
Description
Gmail
Provides email, document uploads, calendars and social networking for free.
SkyDrive
Provides document and image uploads for free.
Dropbox
Enables you to synchronize data amongst various computers and mobile devices. A copy of your data is stored online. Both free and premium accounts are available.
Windows Live Mesh
Enables you to synchronize data amongst multiple devices. Uses SkyDrive as data repository.


Conclusion

Uploading your data on remote servers protects against physical threats and ensures business continuity; when disaster strikes you can easily access and restore your data. The cloud provides flexibility; data can be accessed and managed from an Internet Browser.
The cloud is not only suitable for organizations, using various providers, home users can benefit from this technique.
The key element in Cloud Computing is Trust; users must research and investigate to find a trustworthy provider.


Happy uploading...

Friday 8 July 2011

Google+

About Social Networking

Social Networking: The use of a website to connect with people who share personal or professional interests, place of origin, education at a particular school, etc. Dictionay.com
From such a definition, one can deduce that Social Networking, is not only a technology that enables users to interact with each other, but it also connects users based on certain criteria. For example, users with a common interest can easily meet and discuss their hobbies, users from specific industrial sectors can meet and share knowledge.
Nowadays, amongst many others, the building blocks of a Social Networking Media are the following:
  • Since such technologies make use of the Internet, most applications are web based.
  • Users must create accounts to be able to log-in and participate in conversations. Such accounts are sometimes referred to as Profiles.
  • Users can create and participate in sessions and group discussions.
  • Users can chat with others using Instant Messaging.
  • E-mails can be used by users to send joining invitations to potential users.
  • E-mails can be used by the application to send notifications and alerts.
  • Users can upload and share images, videos and other files.

Some technologies

As a concept Social Networking has always been to enable people to communicate with each other. But similar to other web technologies, Social Networking evolved with the Internet.
To be honest, I do not have much experience in past Social Networking applications. Personally I prefer to meet people and discuss common interests in front of a cup of coffee or a beer, not online. But finding about old technologies and learn how things evolved is an interesting task to do. Amongst many others, the following gained some popularity during the course of time:
  • Bulletin Board System (BBS) – an old technology that enabled users to send messages to each other, upload and download files and read news. The application functionality was very limited, only one user at a time could connect to the system and the interface accepted only text characters.
  • Internet Relay Chat (IRC) – the application enabled its users to send real-time messages to group forums or privately to one user; one-to-one conversations. The interface was very similar to BBS and enabled users to send only text characters.
  • hi5 – this web application was implemented in 2003 and enabled its users to create user profiles, chat in groups, share photos, create photo albums and much more.
  • facebook – no need to explain what facebook is; probably after reading this blog, you will go and check the status of your vegetables in FarmVille. Nowadays facebook is one of the most popular Social Networking Media available.

My Google+

The Google team surprised us with lot of cool services for the last couple of years. Starting as a simple search engine, Google evolved and provided its users with mail capabilities (G-Mail), online documents (Google docs) and much much more. Since this blog is about Social Networking I would like to share my experience while using the Google+. While I was writing this blog, Google was allowing only a minimum number of users to access this project; creating a new account was enabled for a couple of minutes.
The Google+ interface is very easy to use and intuitive, since I'm not very familiar with facebook I will not compare Google+ with facebook, I will only mention some Google+ features that I've tried.
When I logged in for the first time, Google+ enabled me to manage and configure my personal profile and configure security settings; I added my profile picture and filled in some personal details. A cool thing I noticed, Google+ collected all my G-Mail account contacts and asked me to add these as my friends.
Now that my profile is configured, I started to experience some of the new features.

What's inside

The main toolbar
Google+ main toolbar provides 5 easy access buttons. These buttons are described below as follows from left to right:
  • Home – launch your home page and view comments and shared objects.
  • Photos – view and browse all photos; this includes your photo gallery and shared photos.
  • Profile – manage and change your profile settings. This is very similar to the facebook wall.
  • Circles – manage your circles and friends. I will explain what circles are later in this blog.
  • Find people – find people and invite them to Google+.
Circles
In Google+, you can categorize friends in groups called Circles. You can create various circles, configure permissions for each circle and add friends to a circle using drag and drop. I think this is one of the top most cool features in Google+.

Some things you might want to know about circles are:
  • How you organize circles is private, friends are not aware in which circle they belong; unless you upload a screen-shot on your blog, as I did.
  • You can add a person to multiple circles.
  • Once you add a person to a circle, the person can see your profile but NOT vice-versa.
Blocking and blacklisting users
Google+ enables you to create a Blocked circle. As noted in the message, blocked users will not be able to comment on your content and will be removed from all your circles. In simple terms, users are blacklisted.

View your profile as another user
Another cool feature in Google+ is that it enables you to view your profile as another user. For example, I want to see how my profile appears to John Doe.
My profile will launch in the same window and I can test if my security and privacy settings are working as expected.
Starting a hangout
This new feature enables you to start a video conference call with multiple users. With a few clicks, you start a hangout and invite friends from your circles. Once a hangout is started you can load a YouTube video or start a private chat session with one of your participants.
In my carrier I used various video conferencing tools, and I think one of the top most features in Google+ hangouts is the ability to identify the person that is talking to the group; the hangout display will switch on multiple users once they start talking. Imagine, Its like watching a television talk show and the camera person is focusing on different persons as the discussion goes by.

Conclusion

Social Networking is evolving with the Internet and one cannot predict where we're heading. Lot of new cool features are being added using new technologies.
My final thought. Experience such technologies, appreciate evolution and the work involved, and move on; don't get stuck with Social Networking, this hobby will waste a lot of your precious time.

Saturday 25 June 2011

Mobile - Web development


Introduction

About 20 years ago, mobile phones were devices used by business men, sales representatives and Chief Executive Officers; Owning a mobile phone and paying outstanding bills was expensive.  In those days, having a mobile phone was an excessive luxury that not everyone could afford. On the other hand, these devices were huge, and to carry the device was a burden.
Things change, and nowadays mobile phones are everywhere. Not only because bills are cheaper, I think the introduction of Multimedia and cool applications made mobile phones popular.
Internet is everything, news, friends on Facebook, emails and study materials. These goodies were only accessible from a personal computer a few years ago. Today everything is in the palm of our hands. Mobile phone can connect to the Internet, can view emails, has built in GPS and much much more. And yes you can still make phone calls.
In this week’s blog, I will design a mobile web page that can display your exact location using GeoLocations.

About GeoLocation

The GeoLocation API functions are used in web applications to find the geographic location of an object. In simple terms, using this API, a web application can request and find the exact position in terms of Longitude and Latitude of a client accessing the application.
Such technology, is used in a myriad of travelling  web sites; web pages can display nearby restaurants and interesting places to visit. On the other hand, organisations are using this technology to keep track of mobile phones, other devices and travelling employees.
In the old days, when you visit a foreign country for the first time you had to carry a map; surprise, maps are not updated. Today, the only tool that you need is a mobile phone. Locations are updated 24/7, suggested routes are one click of a button and if you’re lost you can always make a phone call and give your exact location to the recipient.
At first glance, this technology sounded complex but when I searched a bit on the Internet I found out that the Geolocations API has a lot of build in functions that can be easily implemented.

The environment

Before going into much detail on how to do this task, I downloaded the Opera Mini emulator.This emulator enables you to test mobile web pages on your personal computer. The emulator is easy to use and the pre-defined list of mobile brands enables you to test your web page on specific mobile devices.
You can choose one of the pre-defined brands and if your mobile is not in the list you can build a custom mobile. Although the emulator uses the host computer Internet connection you can still launch web pages located on your host. This enables you to test web pages that are not yet published on the Internet.

Interface

The web application is divided in the following sections:
  • A section that displays the user location
  • A link that opens the respective Google map
  • A section that displays stored locations
Using HTML markup I added some <div> and <span> tags and designed the following interface:
When the web page is launched, using a JavaScript timer, the user location will update every second. The Start and Stop buttons are used to start and stop the timer respectively. To store the current location, users must click the Record button, and once clicked, the location is added in the Recorded locations section.

Scripting

To check compatibility, I used the following JavaScript If statement:
If the GeoLocation is not installed or not supported, this syntax displays the following error message:
The navigator functions, enables you to construct a position object containing the user exact location. The following function, creates a new instance of the navigator object:
The navigator will call the following functions:
  • userLocated - This function is called when a location is obtained
  • locationError- This function is called when an error occurs
The userLocated function is used to get and display the user current position. In lines 28 to 20, the latitude, longitude and the time stamp are stored in three global variables.
Using the document.getElementById() and the innerHTML() functions, in lines 33 to 35 the values are displayed in the respective <span> tags.
In lines 38 and 39, the google map hyperlink is constructed using the latitude and the longitude retrieved.
When a location is updated, users can click the Record button to add their current location to the Recorded locations list. The following function is used:
When this function is called, the increment variable is incremented by one; this is used to display the location number. Using paragraph tags, the latitude, longitude, time stamp and google map link are added to the respective <div> tag.
I created a timer that will call the readLocation() function every one second as follows:
To start and stop the timer, I added the following <Input> buttons with the following syntax:

Implementation

Once my project was complete, I tested the web page using the opera mini emulator and some mobiles (Android and Windows). The following screenshots shows the result.
1- Load web page in Opera-mini emulator.
2- Load Google map from the provided link. 
 3- Record client location.
4- Load page using Google Chrome. 
5- View Google map from Google Chrome. 
6- Launch web page from iPhone online emulators. 

Conclusion

To test this application from mobile devices I registered with a free web hosting service and my web page can be accessed from http://omarz.comlu.com/projects/gpsloc/gpsloc.html.
Developing mobile web pages and mobile applications is an interesting and challenging task. I think one of the major difficulties is compatibility; various brands, various browsers. Developers can download emulators to test their mobile web pages.
While I was searching for emulators, I found the Android SDK. This SDK includes all the required libraries and an emulator to develop and test Android applications; I’m very tempted to try some stuff.
Happy coding...