Monday, July 19, 2010

Android: Techy or Non-Techy..It doesnt matter anymore

Whether you are a technical guy with strong programming knowledge or non-technical guy with no programming knowledge/background, not to worry about the underlying skills for developing android based mobile applications.

Sounds strange!!!! yeah its true …

  1. If you are a developer, you can develop Android based apps using the Android SDK, a java based development environment allowing developers to create useful apps for the Android Smartphone Market
  2. If you are not a developer who has’nt programmed a computer before, you can still create Android apps by using the newly launched Google’s App Inventor tool - Beta, a web/browser based development environment uses the concept of visual programming language

Google App Inventor Tool for Android is Google’s experiment for the non-developers enabling them to create apps not just consume apps. It has been under development for a year and user testing has been done mainly in schools with groups targeted users who are not major computer science background.

Key features:

  • It doesn’t require any local installation as completely web based
  • It allows or provides interfaces for developers to use the rich features of drag-n-drop
  • It provides block editors based on OpenBlocks Java Library for creating visual programming languages. The build -in compiler translates the blocks (visual representations) into implementation code that could run on Android.

Screenshots:


Right now as the tool is in Beta stage, you cannot directly get your hands on it immediately, but need to get invites to access and try out. I am yet to get my hands on this graphical SDK-in-a-browser, but have requested one, not sure when will get them.

Downside:

First let me put down my thoughts on this tools downside or possibly could be the one as below

  • Major problem on such kind of model in this case will be easy drag’n'drop development, but no or little idea on the underlying code that could possibly result on poor quality, unreliable, or sometimes insecure app.
  • Also I guess loads and lots of apps will come into play, managing and indentifying which one is the best will be difficult.

Letz see how these downsides will be managed by Google in the long run.

Upside:

  • On the positive note, as mass crowd is targeted here to me it is like the first stepping stone for the students or anyone to get more interested, to enable them better coders in near future and start learning actual Java, maybe one day they will create the next killer app.

Reference Links:


Sunday, July 18, 2010

Android #1: Getting to know the Android basics

Introduction to Android:

Android is an open source software stack that includes operating system, middleware, and key applications with a set of APIs for creating new mobile applications.

Unlike other mobile software stack like iPhone that provides their own proprietary operating system that requires proprietary development tools offering native applications given priority over third party applications and the restriction on access to native phone data, communication across applications, Android software stack provides both native applications (such as personal information management, short messaging service, mobile map, e-mail client, mobile web browser, instant message client, music player, image viewer, etc ) and third party applications (generated by us) sharing the same APIs and runtime, offering an open development environment built on Linux kernel. Thus it provides access to hardware as well as across application interaction.

Android APIs:

Android APIs provide features for handling hardware access, location-based services, background services, map-based services, relational database, p2p messaging and graphics (2D & 3D).

Setting up the Development Environment:

One other good feature of Android is that we can set our development environment on operating systems like Windows, Mac OS, Linux unlike iPhone App development pack that needs the Mac OS to my understanding and knowledge

Following are the step-by-step process of setting up Android Software Development Kit (SDK) for development of Android applications:

  • Install Java Development Kit (JDK) 1.5 or higher version and Apache ANT 1.6.5 or higher
  • Install the Android SDK starter pack for the appropriate operating system
  • Install Eclipse IDE 3.4 or higher version but would recommend going on with Eclipse Classic versions without much of other popular plug-ins to make it light
  • Install the Android Development Tools (ADT) plug-in for the Eclipse IDE

The ADT Eclipse Plug-in actually comes with an Android Emulator which is a virtual mobile emulating device that runs on our computer to prototype, develop and test the Android applications without using a actual physical mobile phone. It actually mimics the hardware and software features of an actual mobile phone except it cannot use the calling and other mobile specific features. To use the emulators, we need to create Android Virtual Device (AVD) configurations that has information's on the Android platform to run.

Screenshots: Android Virtual Devices:

Key Components of Android:

Following are the key components of Android

  • Activities: Are the building blocks of User Interface (UI) and are similar to dialog boxes/windows in a typical desktop application scenario
  • Content Providers: Provides control over the data stored on a device that are accessible by multiple applications. That is, they provide a level of abstraction of data accessible across multiple application
  • Services: Activities and Content Providers are short lived components and can be shut down any time whereas Services are designed to keep running if required as an independent Activity. Example, Services can check for any updates on RSS feed or playing background music even if the controlling Activity is no longer operating
  • Intents: They are like event notifiers thus notifying applications about an event. Example, notifies when a SMS arrives, or SD card inserted into the device etc


Tools: Open Source Java Decompiler

Yet another open source Java Decompiler!!

Java Decompiler Project aims to decompile and analyze Java 5 byte code and the later versions. There are two variants of the tools namely JD-GUI (as a standalone GUI) and JD-Eclipse (as a Eclipse Plug-in) available as free for non-commercial usage meaning cannot be plugged with commercial software products for free. Both these tools uses JD-Core freeware library that is pretty much used to reconstruct the Java source code from “.class” files.

Screenshot:

Some of the core features are

  • Faster Decompilation as the JD-Core & JD-GUI tools are written in C++
  • Supports DnD, new features of Java 5, color coding, etc
  • Works with most current compilers

Reference Links:


Trends: Web Trends - Influential Domains & People

Just looking back on the web revolution, internet has become the de-facto international standard for the global network that created a drastic impact on ones culture and commerce. Internet started as a communication medium through email, text based discussion forums, continues to grow, driven by commerce, huge sharing of online information/knowledge and social networking, never seem to have an end.

To provide a perfect overview of the current internet trends, iA Inc came-up with the web trend map V4 that visualizes the current internet trends on how companies and people fit into. Ofcourse I believe for everyone, the map provides a stunning representation and a very fascinating view of the influential domains and people covering 333 domains and 111 peoples. It has ploted the leading internet names into a form of Tokyo Metro System with different lines of business like Publishing line, Broadcasting line, Entertainment line, news line, application line, etc.

Screenshot: This awesome representation of the state of the web mapped with its trend lines and the top trend rankings is displayed below.

Click on it to view the FULL map.

Reference Links:


Tools: Open Source Java or Java EE Monitoring Software

JavaMelody is a open source Java or Java EE monitoring tool provided by Google to measure and calculate the statistics of application user behavior. The primary objective of this tool is to monitor Java or Java EE applications servers in QA and production environments. It is not a tool to replicate user request on an application but a tool used for analyzing usage of the application by the users.

Feature highlights:

  • Provides overall number of executions, the average execution time, the cpu time and the percentage of errors
  • Provides snapshot of Java Memory and CPU utlization
  • Provides information on number of user sessions and JDBC connections
  • Provides statistical information on http errors, on warnings and errors in logs, on data caches if ehcache used and on batch jobs if quartz used

Reference Links:

Trends: Social Networking Map

There are plenty of social networking sites in market today. Many of us might be interested on which social network is popular among them to understand the trends of social networks. Just to anwser this, recently found out this good representation of the social networks seperated geographically. See below world map (static) showing the most popular social networks based on Google trends for website traffic data. Trends look like now Facebook makes it to the #1 most popularly used among others compartively. Also you can see the shift from Orkut to Facebook also catching the Indian users

Snapshot: Click on it to view the full image

As of Dec 2009,

As of June 2009,

Reference Links:

Article: Geographic Location Services

Long back, I was wondering on how application control users from accessing certain information’s without user based authorization in place. It all started when I used PlayStation 3 to connect online with PlayStation Network for downloading demo contents including games and media contents. I had to set-up an US based account as the service was not available in India. Upon setting up the account, I was able to browse through their catalogues and was even able to download games as I expected but was restricted access for the video store to download high definition media contents. After digging into the issue, found out that they are blocking access to that particular section through Geographic information (IP address) and not with the user account set-up.Another instance that brought me to write this blog was a similar requirement from one of our customer on the need for allowing particular functionality to be accessed only by certain users contracted and not the user outside the contracting market. Application and database being hosted in central environment, customers were looking at making use of a geographical location services based on IP addresses and in fact there are many services available in market. Most of the services gives data online and through API’s.

Following are the few categories of services/tools related to the Geo Information I got to know·

  • IP Locator – For locating the place from where the request came from. Like country, city, region etc. Useful to track user location to customize applications and suggest them the nearby services around their area such as shopping offers, generate site statistic reports based on the visitors to the sites from different countries etc·
  • Proxy Detector - For detecting users who bypass Geo location controls by using proxies to spoof their IP address and location
  • Spam Locator - For locating the geographical location that an email originated from·
  • Trace Route Locator – For locating the geographical location of IP Addresses·
  • Dynamic Redirection of internet surfers – For redirecting the user to the localized sites/geographic content etc·
  • Distance between two cities – To determine the distance between two cities/places

Just a sample to try out!! Following simple JavaScript code will enable us to find the basic Geographic location information’s based on the users current IP address and with the help of third party JavaScript API.

<html>
<head><title>Geo Location - User</title></head>
<script type="text/javascript" src="http://j.maxmind.com/app/geoip.js"></script>
<script>
function GetGeoInfo()
{
var info = document.getElementById('GeoInfo');
var lat = geoip_latitude();
var lon = geoip_longitude();
var city = geoip_city();
var out = '<h3>Information from your IP</h3>'+
'<ul>'+
'<li>Latitude: ' + lat + '</li>'+
'<li>Longitude: ' + lon + '</li>'+
'<li>City: ' + city + '</li>'+
'<li>Region: ' + geoip_region() + '</li>'+
'<li>Region Name: ' + geoip_region_name() + '</li>'+
'<li>Postal Code: ' + geoip_postal_code() + '</li>'+
'<li>Country Code: ' + geoip_country_code() + '</li>'+
'<li>Country Name: ' + geoip_country_name() + '</li>'+
'</ul>'
info.innerHTML = out;
}
</script>
<form name="GeoForm">
<body>
<div id="GeoInfo">Getting the User Geo Information</div>
<script>GetGeoInfo();</script>
</body>
</form>
</html>
HTML Response:Information from your IP
  • Latitude: 13.0833
  • Longitude: 80.2833
  • City: Madras
  • Region: 25
  • Region Name: Tamil Nadu
  • Postal Code:
  • Country Code: IN
  • Country Name: India

Reference Links:


Tools/Frameworks: Open Source Online Shopping Cart Solution

TomatoCart is an open source shopping cart solution developed by Wuxi Elootec Technology Co., Ltd. It is branched from osCommerce 3 as a separate project and is released under the GNU General Public License. Equipped with the web2.0 Technology Ajax and Rich Internet Applications, TomatoCart is devoted to building a landmark eCommerce solution.

Feature highlights: TomatoCart has several significant enhancements based on osCommerce 3:

  • Rich Internet Applications based administration panel
  • Search Engine Optimization
  • Web Analytics (Piwik)
  • Lightweight Framework Content Management System
  • Email System

Key features to highlight that are somewhat differentiating

  • ExtJS Rich Internet Applications Framework - The TomatoCart administration site is completely rewritten based on Ext JS which is a cross-browser JavaScript library for building Rich Internet Applications. It includes many high-performance and customizable UI widgets to simplify work with web applications.
  • Multi-window Environments - Web desktop based application allows users to keep several windows open simultaneously, to enable users to work with several modules such as products, customers and orders at the same time. It mimics user experience of desktop Operating System, offering features and applications similar to a PC environment. So that users can easily start to work with TomatoCart without any difficulty

Technology Stack: TomatoCart can be installed on any server where a web server with PHP has been installed on and has access to a MySQL database server

  • Linux or Windows OS
  • PHP v5.2.0 (with MySQLi extension)
  • MySQL v4.1.13 or v5.0.7
  • Ext JS 2.2.1

TomatoCart Subversion repository is hosted at Google code.

Reference Links:

Tools: Open Source SEO Panel to manage and monitor SEO initiatives

SEO Panel is a complete open source SEO control panel and free software released under GNU General public license to manage and monitor search engine optimization (SEO) of not just one but multiple websites under one umbrella. It provides various SEO tools to increase and track the performance of websites for optimization.

It was released during January 2010 and is gaining popularity because of its rich features among other commercially available tools.

Key Features of SEO Panel:

  • SEO Plug-ins: One of the major feature of SEO Panel is its extensibility feature wherein user using this tool can further extend the features according to their requirements with the help of SEO Panel provided plug-in, third party plug-ins and also develop your own custom plug-ins reviewed by SEO Panel
  • Directory Submission: Automatic directory submission to major internet directories and to check/track them
  • Keyword Position Checker:
    1. Quick Rank Checker feature to check on the search engine position for targeted keywords
    2. Keywords Manager feature to manage targeted keywords
    3. Reporting feature to generate daily, simple and graphical performance reports of targeted keywords in major search engines
  • Search Engine Saturation Checker: Features to identify the number of indexed pages in different major search engines and also provides detailed indexing reports of websites
  • Meta Tag Generator: Feature to create suitable meta-tags for each website
  • Google Site Map Generator: Google sitemap generator to create XML,TEXT and HTML Sitemaps
  • Rank Checker: Features to check, reporting on Google, Alexa page ranks of multiple URLs
  • Backlinks Checker: Feature to check, reporting on the number of backlinks of each website in google,yahoo,msn,altavista and alltheweb
Reference Links:

Thursday, July 15, 2010

Tools: Open Source Project Management Software

OpenProj is a free, open source project management tool and replaces all the commercially avaialble project management tools such us Microsoft Project. It has all equivalent functionality and a familiar user interface as that of MS Project and even opens existing MS Project Plan (mpp) files. Apart from Microsoft OS, it is also available for Linux, Unix, Mac OS. It can be downloaded for free from sourceforge. This product serves as desktop alternative to Microsoft, but also has also similar product named “Projects On Demand” available as Software as a Service (SaaS) project solution through which projects can be managed via the browser with additional features of multi-project, collaboration, management and reporting.

Screenshot:



Reference Links:
http://openproj.org/openproj
http://sourceforge.net/projects/openproj/files