Wireframes vs. Prototypes: What’s the Difference?

By Marcin Treder, CEO of UXPin.

wireframe is not the same as a prototype but even seasoned design professionals can sometimes get the two terms mixed up. A wireframe is a low-fidelity representation of a product’s design. It has three simple objectives; the clear presentation of:

  1. Main groups of information
  2. Layout/structure of information
  3. Core visualization and descriptions of user interface interactions

prototype is a mid- to high-fidelity representation of the final user interface.

The goal of a prototype is straightforward: Simulate the interaction between the user and the interface.

Whenever a button is clicked, the appropriate action must occur, mimicking the experience of a full product.

 

Full Article:

http://sixrevisions.com/user-experience-ux/wireframes-vs-prototypes-difference/

How to Create Dynamic Graph in Apple iOS

Title: How to Create Dynamic Graph in iOS with Sqlite database using Core-Plot.

Introduction :

  1. Dynamic chart is a user friendly mechanism to depict information to user in a real time system .
  2. In iOS we can easily generate dynamic charts using core-plot library
  3. This application is developed in iOS 6.0 with XCODE 4.5.2. for iPad.

Functionality of the App:
The main aim of this application is to display the dynamic graph based on picker value selection.This is a ‘Sales by Product’ graph.Product Name is plotted on x-axis and Product Qty is plotted on y-axis for a selected Customer and Year combination (See screenshot below, more images can be found at end of post).

pic1

DataBase tables:
Here we are using the Customer Table.

FieldName         DataType

customername    varchar

productname      varchar

productqty          varchar

Year                   varchar.

Steps to implementation:

  1. Download the latest version of core-plot library file and unzip it.
  2. Create a new Xcode project.
  3. Create a new folder with name Header in this project.
  4. Drop the files of the Core-Plot library>Source>framework>Source folder into Header folder of the Project.
  5. Next add the Quartz core and CoreText frame works.
  6. Add the Link binary libraries with libCorePlot-coreTouch.a
  7. Add the framework path in the Header Search Path in the build settings of the Project.
  8. Now you are ready to add the data to the graph.
  9. Next import the GraphView.h file in the ViewController.h.
  10. Next in .xib file drag the UIView and add the class name as GraphView.
  11. Just add the [self.graphView createGraph]; in viewDidAppear method of ViewController.m file.
  12. Next build and run the app.
  13. See the Results below.Your screen should look like this in iPad simulator.

Sample Code:

GraphView.h::

#import
#import “CorePlot-CocoaTouch.h”

@interface GraphView : CPTGraphHostingView
{
CPTXYGraph *graph;

NSDictionary *data;
NSDictionary *sets;
NSArray *dates,*qty;
}

- (void)createGraph;
-(void)creategraphwithdata:(NSMutableArray *)xaxis withyaxis:(NSMutableArray *)yaxis;
@end

GraphView.m::

#import “GraphView.h”

@implementation GraphView

- (void)generateData
{
}
//set Lay out for displaying graph
- (void)generateLayout
{

graph = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
[graph applyTheme:[CPTTheme themeNamed:kCPTStocksTheme]];
self.hostedGraph = graph;
graph.plotAreaFrame.masksToBorder = NO;
graph.paddingLeft = 25.0f;
graph.paddingTop = 0.0f;
graph.paddingRight = 1.0f;
graph.paddingBottom = 1.0f;

CPTMutableLineStyle *borderLineStyle = [CPTMutableLineStyle lineStyle];
borderLineStyle.lineColor = [CPTColor whiteColor];
borderLineStyle.lineWidth = 2.0f;
graph.plotAreaFrame.borderLineStyle = borderLineStyle;
graph.plotAreaFrame.paddingTop = 10.0;
graph.plotAreaFrame.paddingRight = 10.0;
graph.plotAreaFrame.paddingBottom = 120.0;
graph.plotAreaFrame.paddingLeft = 10.0;

//Add plot space
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.delegate = self;
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0)
length:CPTDecimalFromInt(10 * sets.count)];
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(-1)
length:CPTDecimalFromInt(10)];

//Grid line styles
CPTMutableLineStyle *majorGridLineStyle = [CPTMutableLineStyle lineStyle];
majorGridLineStyle.lineWidth = 0.75;
majorGridLineStyle.lineColor = [[CPTColor whiteColor] colorWithAlphaComponent:0.1];
CPTMutableLineStyle *minorGridLineStyle = [CPTMutableLineStyle lineStyle];
minorGridLineStyle.lineWidth = 0.25;
minorGridLineStyle.lineColor = [[CPTColor whiteColor] colorWithAlphaComponent:0.1];

//Axes
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;

//X axis
CPTXYAxis *x = axisSet.xAxis;
x.orthogonalCoordinateDecimal = CPTDecimalFromInt(0);
x.majorIntervalLength = CPTDecimalFromInt(1);
x.minorTicksPerInterval = 0;
x.labelingPolicy = CPTAxisLabelingPolicyNone;
x.majorGridLineStyle = majorGridLineStyle;
x.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0];

//X labels
int labelLocations = 0;
NSMutableArray *customXLabels = [NSMutableArray array];

for (NSString *day in dates) {
CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText:day textStyle:x.labelTextStyle];
newLabel.tickLocation = [[NSNumber numberWithInt:labelLocations] decimalValue];
newLabel.offset = x.labelOffset + x.majorTickLength;
newLabel.rotation = M_PI / 4;
[customXLabels addObject:newLabel];
labelLocations++;
// [newLabel release];
}

x.axisLabels = [NSSet setWithArray:customXLabels];

//Y axis
CPTXYAxis *y = axisSet.yAxis;
y.title = @”Value”;
y.titleOffset = 50.0f;
y.labelingPolicy = CPTAxisLabelingPolicyAutomatic;
y.majorGridLineStyle = majorGridLineStyle;
y.minorGridLineStyle = minorGridLineStyle;
y.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0];

//Create a bar line style
CPTMutableLineStyle *barLineStyle = [[CPTMutableLineStyle alloc] init];
barLineStyle.lineWidth = 1.0;
barLineStyle.lineColor = [CPTColor whiteColor];
CPTMutableTextStyle *whiteTextStyle = [CPTMutableTextStyle textStyle];
whiteTextStyle.color = [CPTColor whiteColor];

//Plot
BOOL firstPlot = YES;
for (NSString *set in [[sets allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]) {

CPTBarPlot *plot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor blueColor] horizontalBars:NO];
plot.lineStyle = barLineStyle;
CGColorRef color = ((UIColor *)[sets objectForKey:set]).CGColor;
plot.fill = [CPTFill fillWithColor:[CPTColor colorWithCGColor:color]];
if (firstPlot) {
plot.barBasesVary = NO;
firstPlot = NO;
} else {
plot.barBasesVary = YES;
}
plot.barWidth = CPTDecimalFromFloat(0.5f);
plot.barsAreHorizontal = NO;
plot.dataSource = self;
plot.identifier = set;
[graph addPlot:plot toPlotSpace:plotSpace];
}

//Add legend
CPTLegend *theLegend = [CPTLegend legendWithGraph:graph];
theLegend.numberOfRows = sets.count;
theLegend.fill = [CPTFill fillWithColor:[CPTColor colorWithGenericGray:0.35]];
theLegend.borderLineStyle = barLineStyle;
theLegend.cornerRadius = 10.0;
theLegend.swatchSize = CGSizeMake(35.0, 35.0);
whiteTextStyle.fontSize = 13.0;
theLegend.textStyle = whiteTextStyle;
theLegend.rowMargin = 5.0;
theLegend.paddingLeft = 00.0;
theLegend.paddingTop = 00.0;
theLegend.paddingRight = 00.0;
theLegend.paddingBottom = 00.0;
graph.legend = theLegend;
graph.legendAnchor = CPTRectAnchorTopLeft;
graph.legendDisplacement = CGPointMake(80.0, -10.0);
}
-(void)creategraphwithdata:(NSMutableArray *)xaxis withyaxis:(NSMutableArray *)yaxis
{

NSMutableDictionary *dataTemp = [[NSMutableDictionary alloc] init];

//Array containing all the dates that will be displayed on the X axis
dates =[[NSMutableArray alloc]initWithArray:xaxis];

qty =[[NSMutableArray alloc]initWithArray:yaxis];

//Dictionary containing the name of the two sets and their associated color
//used for the demo
sets = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor blueColor], @”Qty”, nil];

//Generate random data for each set of data that will be displayed for each day
//Numbers between 1 and 10
int i=0;
for (NSString *date in dates) {
NSMutableDictionary *dict = [NSMutableDictionary dictionary];

for(NSString *set in sets) {

[dict setObject:[qty objectAtIndex:i] forKey:set];
i++;
}
[dataTemp setObject:dict forKey:date];
}

data = [dataTemp copy];

[self generateLayout];

}

#pragma mark – CPTPlotDataSource methods

- (NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
{
return dates.count;
}

- (double)doubleForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
{
double num = NAN;

//X Value
if (fieldEnum == 0) {
num = index;
}

else {
double offset = 0;
if (((CPTBarPlot *)plot).barBasesVary) {
for (NSString *set in [[sets allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]) {
if ([plot.identifier isEqual:set]) {
break;
}
offset += [[[data objectForKey:[dates objectAtIndex:index]] objectForKey:set] doubleValue];
}
}

//Y Value
if (fieldEnum == 1) {
num = [[[data objectForKey:[dates objectAtIndex:index]] objectForKey:plot.identifier] doubleValue] + offset;
}

//Offset for stacked bar
else {
num = offset;
}
}

return num;
}

@end

ViewController.h:

#import
#import “GraphView.h”

@interface ViewController : UIViewController
{
NSArray *customerarray,*yeararray;
NSString *picker1value,*picker2value;
NSMutableArray *productname,*productqty;
NSMutableArray *getdata;
}
@property (nonatomic, retain) IBOutlet GraphView *graphView;
@end

ViewController.m:

#import “ViewController.h”
#import “BC.h”
NSString *_arrayForFourth[][2]={};

@implementation ViewController

@synthesize graphView;

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];

[self.graphView createGraph];
}

- (void)viewDidLoad
{
[super viewDidLoad];

picker1value=[[NSString alloc]init];
picker2value=[[NSString alloc]init];
productname=[[NSMutableArray alloc]init];
productqty=[[NSMutableArray alloc]init];
getdata=[[NSMutableArray alloc]init];
picker1value=@”BestDeals.Com”;
picker2value=@”2011″;
//data for picker values
customerarray=[[NSArray alloc]initWithObjects:@”BestDeals.Com”,@”Electronic City”, nil ];
yeararray=[[NSArray alloc]initWithObjects:@”2011″,@”2012″, nil ];
BC *bc=[BC sharedManager];
//create table for display data in graph.
[bc createCUSTOMERTable];

}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{

if (pickerView.tag==1) {
picker1value=[customerarray objectAtIndex:row];

[self displaygraphwithdata:picker1value withpicker2:picker2value];

}
else{
picker2value=[yeararray objectAtIndex:row];

[self displaygraphwithdata:picker1value withpicker2:picker2value];
}
}
-(void)displaygraphwithdata:(NSString *)picker1 withpicker2:(NSString *)picker2
{

BC *bc=[BC sharedManager];
[getdata removeAllObjects];

getdata=[bc GETdata:picker1 withyear:picker2];

int rows=([getdata count])/2;
int k=0;
for (int i=0; i for (int j=0; j<2; j++) {

_arrayForFourth[i][j]=(NSString *)[getdata objectAtIndex:k];
k++;

}
}
[productname removeAllObjects];
[productqty removeAllObjects];
for (int i=0; i [productname addObject:_arrayForFourth[i][0]];
[productqty addObject:_arrayForFourth[i][1]];

}
//send the x axis and y axis data to display graph.
[self.graphView creategraphwithdata:productname withyaxis:productqty];

}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{

if (pickerView.tag==1) {
return 2;
}
else{

return 2;
}

}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{

if (pickerView.tag==1) {
return [customerarray objectAtIndex:row];
}
else{

return [yeararray objectAtIndex:row];
}

}
- (void)viewDidUnload
{
[super viewDidUnload];

self.graphView = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}

@end

The Following classes are Sq Lite database creation and insertion of the data in to the table.

BC.h

#import "DatabaseFile.h"
@interface BC : NSObject
{
DatabaseFile *db;
}
+ (id)sharedManager;
-(void)createCUSTOMERTable;
-(void)insertdata;
-(NSMutableArray *)GETdata:(NSString *)custname withyear:(NSString *)year;
@end

BC.m
#import "BC.h"

@interface BC ()

@end

static BC *controller = nil;
@implementation BC

+ (id)sharedManager {
@synchronized(self) {
if (controller == nil)
{
controller = [[self alloc] init];
}
}
return controller;
}
- (id)init {
if (self = [super init]) {
db = [[DatabaseFile alloc]init];
}
return self;
}
-(void)createCUSTOMERTable
{
[db createCustomerTable];
}
-(void)insertdata
{
[db insertintocustomerTable];}
-(NSMutableArray *)GETdata:(NSString *)custname withyear:(NSString *)year
{
return [db getdata:custname withyear:year];
}
@end

DatabaseFile.h

#import
#import “sqlite3.h”

@interface DatabaseFile : NSObject
{
sqlite3 *db;

NSMutableArray *array;
}
-(void)openDb;
-(void)createCustomerTable;
-(void)insertintocustomerTable;
-(NSMutableArray *)getdata:(NSString *)custname withyear:(NSString *)year;
@end

DatabaseFile.m
#import “DatabaseFile.h”

@interface DatabaseFile ()

@end

@implementation DatabaseFile

static sqlite3_stmt *addStmt = nil;
static sqlite3_stmt *retrievestatement = nil;

-(id)init
{
if (self = [super init])
{
[self openDb];
}
return self;
}
-(NSString*)filepath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentdir = [paths objectAtIndex:0];
return [documentdir stringByAppendingPathComponent:@"DataBaseforBlog.Sqlite"];

}
-(void)openDb
{
if(sqlite3_open([[self filepath] UTF8String], &db) != SQLITE_OK)
{
sqlite3_close(db);
NSAssert(0, @”Database failed to open”);
}

}

-(void)createCustomerTable
{
const char *sql = “CREATE TABLE IF NOT EXISTS ‘Customer’(‘customername’ varchar,’productname’ varchar,’productqty’ varchar,’year’ varchar);”;

if(sqlite3_prepare_v2(db, sql, -1, &addStmt, NULL) != SQLITE_OK)
{
sqlite3_close(db);
NSAssert(0, @”TABL FAILED TO CREATE”);
}

sqlite3_exec(db, sql, NULL, NULL, NULL);

sqlite3_finalize(addStmt);
}

-(void)insertintocustomerTable
{
[self insertIntoCustomer:@"Electronic City" withproductname:@"NoteBook 2291SL" withproductqty:@"5" withyear:@"2011"];
[self insertIntoCustomer:@"Electronic City" withproductname:@"MobiTab 9 Inch" withproductqty:@"6" withyear:@"2011"];
[self insertIntoCustomer:@"Electronic City" withproductname:@"NOVA SuperDesktop PC" withproductqty:@"6" withyear:@"2012"];

[self insertIntoCustomer:@"BestDeals.Com" withproductname:@"UltraBook 1101DX" withproductqty:@"7" withyear:@"2012"];
[self insertIntoCustomer:@"BestDeals.Com" withproductname:@"NoteBook 2291SL" withproductqty:@"4" withyear:@"2012"];
[self insertIntoCustomer:@"BestDeals.Com" withproductname:@"MobiTab 9 Inch" withproductqty:@"2" withyear:@"2011"];
[self insertIntoCustomer:@"BestDeals.Com" withproductname:@"NOVA SuperDesktop PC" withproductqty:@"1" withyear:@"2011"];

}
//insert data into customer table.
-(void)insertIntoCustomer:(NSString *)custname withproductname:(NSString *)productname withproductqty:(NSString *)qty withyear:(NSString *)year
{
if(sqlite3_open([[self filepath] UTF8String], &db) == SQLITE_OK)
{
addStmt = nil;

if(addStmt == nil) {

const char *sql = “insert into Customer(customername,productname,productqty,year) Values(?,?,?,?)”;
if(sqlite3_prepare_v2(db, sql, -1, &addStmt, NULL) != SQLITE_OK)
NSLog(@”failed to create statement”);

}

sqlite3_bind_text(addStmt, 1, [custname UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 2, [productname UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 3, [qty UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 4, [year UTF8String], -1, SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @”Error while inserting data. ‘%s’”, sqlite3_errmsg(db));
else
NSLog(@”sqlite last insert”);

sqlite3_finalize(addStmt);

}

}
//select the data from database.
-(NSMutableArray *)getdata:(NSString *)custname withyear:(NSString *)year
{
array = [[NSMutableArray alloc]init];
if(sqlite3_open([[self filepath] UTF8String], &db) == SQLITE_OK)
{
retrievestatement = nil;

if(retrievestatement == nil) {

const char *sql = “SELECT productname,productqty FROM Customer where customername=(?) and year=(?)”;

if(sqlite3_prepare_v2(db, sql, -1, &retrievestatement, NULL) != SQLITE_OK)
NSAssert1(0, @”Error while creating detail view statement. ‘%s’”, sqlite3_errmsg(db));

}
sqlite3_bind_text(retrievestatement, 1, [custname UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(retrievestatement, 2, [year UTF8String], -1, SQLITE_TRANSIENT);

while(sqlite3_step(retrievestatement) == SQLITE_ROW)
{

[array addObject:[NSString stringWithUTF8String:(const char*)sqlite3_column_text(retrievestatement, 0)]];

[array addObject:[NSString stringWithUTF8String:(const char*)sqlite3_column_text(retrievestatement, 1)]];
}

sqlite3_finalize(retrievestatement);
}

return array;

}
@end

Results:
Your screen should look like this in iPad simulator.

pic2

pic3

Infographic on Apple iOS Enterprise Training

Check out this infographic on Apple iOS Enterprise Course Content. Contact us if you want to know more about our courses.

http://www.appulento.com/apple-ios-enterprise-course-content-infographic

apple-ios-enterprise-course-content-infographic

SAP Sybase Unwired Platform (SUP) FAQs

SUP is SAP’s MEAP/MADP product. Interested in trying out SAP SUP product? Have questions? Check out the link:

http://scn.sap.com/docs/DOC-28279

SAP bets on HTML5, open source for its mobile-app platform

sap_logo-copy-100048079-large

SAP is planning to rely heavily on HTML5 and open standards within its products for building mobile applications, and is embracing the concept of BYOT (bring your own tools) in order to draw interest from developers.

Version 3.0 of SAP Mobile Platform, which was announced Tuesday during the Tech Ed conference in Las Vegas, will combine SAP’s NetWeaver Gateway, Sybase Mobiliser, and Syclo Agentry products “to meet current and future mobile app use cases,” according to the announcement.

SAP’s mobility tools will support open-source standards such as OSGi, OData and Apache Cordova. Developers can also expect “extensive use of HTML5,” SAP said.

Under the BYOT approach, developers can use their desired tools alongside those from SAP’s platform. SAP is also planning to offer a cloud version of the mobile platform, according to the announcement.

The company announced updates to its Mobile Secure product portfolio on Tuesday as well.

An upcoming cloud-based version of SAP Mobile App Protection will help companies apply “fine-grained” security to applications running on iOS and Android devices, SAP said. The company has also upgraded its Mobile Documents product, adding iPhone and Android support, and has created a new secure mobile browser.

More mobile friendly
SAP gained a set of mobility products through the 2010 acquisition of Sybase.

It has been emphasizing mobile-friendly software development heavily of late, and earlier this year launched Fiori, a set of lightweight mobile applications that tie into its core Business Suite ERP (enterprise resource planning) system.

The Mobile Platform 3.0 release also represents a fresh start of sorts for SAP, according to one observer.

“When SAP assumed Sybase’s mobile assets, they basically did not have a complete or stable product,” said analyst Ray Wang of Constellation Research. “This new release is a major overhaul which allows them to write once, deploy everywhere.”

SAP did make tweaks to the Sybase technology as part of the 3.0 upgrade, said executive board member Vishal Sikka, who heads all development, during a press conference on Tuesday at Tech Ed.

SAP has also had some time to rethink what is truly important for mobile developers, Wang added.

“Embedded security, mobile apps stores, and community are key to their potential success this time around,” he said. “The challenge will be the price points as IBM is also aggressively competing in this space.”

What The Heck is… The Internet of Things?

By Bernard Marr

Some say The Internet of Things will be bigger than the Internet! Let me just pause for a second and say two things: firstly, what a stupid name for such an important development, and secondly, how can something be bigger than the Internet if it is part of it? Anyway, now I have got this off my chest, let’s look at what it really is and why people are making huge claims about it.

Basically, The Internet of Things describes the fact that many everyday objects, from diapers to self-driving cars, have (or will soon have) the ability to send and receive data via the Internet. In fact, during 2008, the number of devices connected to the Internet surpassed the number of people using the Internet. Today, we have over 10 billion connected objects in the world and by 2020, this is predicted to rise to 50 billion.

So, what does that mean for us? It means that we will have more data than ever before, indeed, we will soon have data about most things on the planet. To put this into perspective, the same amount of data that was generated from the beginning of time up to 2008 will soon be generated every 10 minutes – and the rate is accelerating faster than a drag racing car on steroids.

This huge increase in data means we can use it to create a smarter world, where buildings sense and predict temperatures outside and adjust heating or air conditioning systems inside, where cars will drive themselves, where electricity and water grids self-diagnose problems, where your alarm clock monitors your sleep and wakes you up at the right time so your body doesn’t feel tired and where your baby’s diaper tweet you when it needs changing. A futuristic vision? No, all of these things are already here today.

Here are a few more very real examples of what The Internet of Things can do today:

  • Wearable devices like the FitBit, UpBand and others collect data on how many steps you take, how well you have slept, how many calories you have consumed and much more. I believe that the next big push for the Internet of Things will come from Smart Watches – Samsung and Sony have already released theirs, and I believe versions from Google and Apple will follow soon. These devices will collect data on almost anything – your geographical location, your speed or your body functions – and will be able to use this data for analysis in their apps (synced to phones or tablets)
  • We can use wearable devices to monitor our health, our weight and our wellbeing. Other companies are now working on pills with in-built sensors, so when you swallow them, they take information from the inside of your body and submit it to devices such as smart phones. These pills will be able to alert you to any medical problems – just imagine a pill that senses the onset of labor in pregnant women and automatically informs their doctor and midwife.
  • We can already buy sensor mats that you place under your baby’s mattress to monitor their health. It detects breathing patterns and heart rate and alerts you if anything is wrong. Just imagine how many tragic cot deaths could be avoided that way.
  • Sensors are everywhere. Our oceans are full of sensors that track sea temperature and currents. There are a number of companies that put sensors into farmland to track its health and predict the right level of fertilizers required to obtain an optimal crop. Your toothbrush can sense how well you are brushing and send the analysis to your smart phone so you can learn and improve.
  • In my house, my security alarm is connected to the Internet and will alert me about any intruder. My bathroom scales are connected to the Internet and not only monitor my weight, body mass index and heart rate, but also the air quality in our house. I have light bulbs that link into my wireless network, which allows me to control them with my iPhone. I have sensors in my garden and indoor plants that send me a message to my phone when they need watering.
  • In the world of sport, we now see basketballs that collect data using 200 inbuilt sensors. The ball then sends the data to your smart phone where you can get an in-depth analysis of your performance as well as advice on how to improve your game. The same is now available for golf clubs, fishing rods, bicycles etc.
  • Our cars are already full of sensors, cameras and processors, but the pinnacle is Google’s self-driving car. The Toyota Prius (fitted with Google’s self-driving technology) is already licensed in California, Florida and Nevada. The car uses on-board computers, sensors and cameras to drive automatically and has already clocked up many hundreds of thousands of miles accident-free.

As you can probably tell, I love all of this and see endless opportunities for business, science and governments to exploit this new data tidal wave. Just imagine what will happen when you connect all these devices in even smarter ways – when your refrigerator knows what items are past their use-by date and re-orders them for the next shop; when your smart watch makes an appointment with your doctor because it has detected some abnormalities; when buses wait for a delayed train to arrive or finally when your alarm automatically adjusts its wake-up time because your early morning appointment has been cancelled overnight.

I even like the idea of the digital diaper – not because I need a tweet to tell me that my little one has done a ‘Number Two’ but because the next generation of these diapers will automatically analyze the urine and alert me to the onset of any infections even before any physical symptoms appear.

I hope this article has made the often fuzzy concept of The Internet of Things clearer. Please let me know what you think – what smart appliances or applications would you like to see?

http://www.linkedin.com/today/post/article/20131023054859-64875646-what-the-heck-is-the-internet-of-things

Enterprise Mobility Market Set For Huge Growth

“Global BYOD and Enterprise Mobility market will reach $181 billion by 2017, up from $67.21 billion in 2011″

http://www.netmotionwireless.com/blog/field-mobility/as-predicted-mobile-deployments-set-for-explosive-growth/

Android Phones – Power Profiling

How to ensure Android apps use less battery power? How to find out how much power your app is consuming? Find answers in this video by Frank Maker (Marakana Tech TV)

Androids In Space: Nexus One Blasts Into Orbit This Month

It’s not a joke :)

The University of Surrey’s Space Centre (SSC) will send the first smartphone into space later this month. The phone, a Google Android-powered (and branded) Nexus One device, is set to blast into space on 25 February and will be used see if it can reduce the cost and complexity of space missions by performing in-orbit functions.

The handset will be carried on the STRaND-1 satellite. STRaND-1 will launch from Sriharikota in India, and is set to achieve another world first by taking along the first 3D-printed object to go into orbit.

Source: ZDNet

http://www.zdnet.com/androids-in-space-nexus-one-blasts-into-orbit-this-month-7000011051/

Powered by WordPress | Designed by: wordpress themes free | Find Free WordPress Themes and find best wordpress themes at wordpress 4 themes.