Categories
Uncategorized

iPhone 6 news for people who work for a living

iphone 6
You’ll find all sorts of articles about the iPhone 6 and iPhone 6 Plus online right now, and you should expect more this weekend. A good number of them will talk about the underlying hardware, iOS 8’s features, how the new phones will stack up against Samsung and other Android offerings, previews of the games, and so on. We’ll leave other people to cover those topics for now — let’s talk about what matters to those of us who work for a living.

Who’s got the iPhone 6 / iPhone 6 Plus deals?

iphone 6 and iphone 6 plus

The newest iPhones — the iPhone 6 and 6 Plus — are available for online pre-order as of this writing (Friday, September 12th), but that doesn’t mean they’ll be easy to come by. There are reports that Apple’s servers were overloaded by incoming visitors eager to get their latest and greatest, and AT&T are reporting that the demand for iPhones is higher than it’s been for the past two years.

If getting one sooner than later is important to you, you’ll want to order the smaller iPhone 6, as the iPhone 6 Plus seems to be in greater demand and has been selling out. You can also try your luck at your local Apple Store, which will start carrying them next Friday, September 19th.

verizon Verizon are offering a $200 gift card, the price of entry-level 16GB iPhone 6 with a two-year contract, if you bring an iPhone 4 or 4s for trade-in. As TIME notes, this is a better deal than the one you’ll get at Apple; they’re offering $60 for a trade-in of an iPhone 4 in good condition.

att jpg If you register a new iPhone with AT&T’s Next plan by September 30th, whether you’re a new or current customer, AT&T will give you a $100 credit on your mobile bill. They’ll also buy your old iPhone for up to $300, which you can apply to a purchase of an iPhone 6 or 6 Plus.

sprint Sprint will beat any trade-in offer on the iPhone 6 or 6 plus from a major carrier, and they’ll pay up to $350 per line if you switch to them. They’re also offering a new plan specifically for iPhone 6/6 Plus customers with unlimited voice, text, and data for $50 a month.

t-mobile T-Mobile is also taking the “find an iPhone trade-in deal and we’ll match it” tack and sweetening it with an additional $50 credit on your bill, plus up to $350 for switching.

walmart If you’re on a budget but still want the new iDevices, Walmart will sell the base versions of the 6 and 6 Plus at a $20 discount; Sam’s Club will add an extra $2 to that discount.

Will you be able to use the iPhone 6/6 Plus (or any iDevice running iOS 8) at work?

The answer is: probably, but definitely if you work at a place where your devices are being managed using SAP’s systems.

SAP logoSAP have announced that their SAP® Mobile Platform SAP Mobile Secure portfolio and mobile apps will support the upcoming iPhone 6 devices and iOS 8 operating system. This isn’t unexpected, given iOS’ commanding share of apps and tablets in the enterprise and the fact that the lion’s share of its users run the current OS version.

From their press release:

Many of the new enterprise features within iOS 8 can benefit SAP customers eager to adopt corporate security requirements such as single sign-on, per-app VPN and app configuration. SAP has validated iOS 8 for apps running on SAP Mobile Platform and plans to further enhance support with upcoming releases of the software development kit (SDK) for SAP Mobile Platform. Companies can mobilize their business with SAP Mobile Platform by quickly building, deploying and securely managing apps for employees, customers and partners. The new harmonized API is available for consuming online and offline data and will be compatible with Swift programming language for developing mobile applications.

“With mobile playing a critical role in helping to simplify business we constantly expand the ability for our employees to manage all their work needs on any device, as early as possible,” said Michael Golz, CIO, SAP Americas. “At SAP we support more than 66,600 iPhones and iPads used by our employees worldwide. Our teams continue to offer the same support for deploying the iPhone 6 and iOS 8 as we have in the past. The SAP Mobile Secure portfolio will support all of the company’s devices as well as employees’ own devices. A top concern with deploying new devices is security, so it is imperative that our complete mobile portfolio is ready for the new iOS 8 on day one.”

What about the iWatch?

apple watch

TechRepublic says that we should expect the Apple Watch to be “in heavy BYOD demand from Day One”. We won’t know how well it’ll sell when it’s released early next year, but considering Apple’s cachet in the enterprise and that the Watch’s target market is the executive class, it’s likely to find its way into business IT; first by being snuck in, and then openly.

Hey, I work for a living and I’d still like to watch the Apple presentation. Where can I do this?

If you tried to catch the streaming broadcast of Apple’s September 9th announcement, you were treated to this image and no sound for a long time:

tv truck schedule

In limiting the streaming to only those people with Macs (and even then, only if you use Safari), Apple TVs, and iDevices, Apple missed out on a big opportunity, as Anthony Leather points out in his article in Forbes:

…by far worst thing that happened on Tuesday was Apple’s shortsightedness at restricting viewing to Safari users, namely iPhone and iPad owners. The iPhone 6 represents the biggest changes to the iPhone perhaps since its inception and it enters a market that’s a little stagnant in terms of new features. This was a massive opportunity for Apple to tempt Android users away from their Samsungs and HTC’s with a bigger screen and plenty of other unique features besides.

After the fact, Apple posted the full video for their presentation, which I’ve included below. Be warned: it’s long. As in 2 hours, 3 minutes, and 25 seconds long. You’ll either want to fast-forward through the slow bits, or spread this out over a few lunches at your desk:

If you don’t have the two hours to spare, The Verge have got you covered. They condensed it down to a coffee-break-friendly 11 minutes in a video titled, appropriately enough, The Apple Keynote in 11 Minutes:

If you can’t get enough Apple promos, they’ve posted a number of videos to coincide with the iPhone 6, iPhone 6 Plus, and Apple Watch on their YouTube channel.

this article also appears in the GSG blog

Categories
Uncategorized

What I’d love to see at Tuesday’s Apple unveiling

pocket watch - stonehenge - casio - turkey leg

Photo by Adam Lisagor (@lonelysandwich). Click to see the source.

I’m hoping that Tim Cook uses the slide shown above, channels Steve Jobs’ 2007 iPhone keynote and says:

“A pocket watch, Stonehenge, a Casio, and a turkey leg. A pocket watch, Stonehenge, a Casio, a turkey leg. Are you getting it? These are not four separate devices. This is one device!

Categories
Uncategorized

InfoSec Taylor Swift on Windows Phone security

inforsec taylor swift on windows phone

Click the screen capture to see the original tweet.

It’s tweets like this that make her my favorite singer/songwriter/information security expert.

Categories
Uncategorized

This fall’s new phones at IFA 2014

ifa

IFA 2014, Europe’s largest consumer electronics show, takes place in Berlin starting tomorrow (September 5th) and runs until September 10th. It’s a great forum to do international launches for consumer devices that you want to sell during the holidays, and the mobile hardware vendors are promoting their wares there right now. Here’s a quick review of some of the new phones that have been presented so far by Samsung, Sony, HTC, and Microsoft Devices.

Samsung Galaxy Note Edge

samsung galaxy note edge

Samsung’s Galaxy Note Edge is going to be its next flagship “phablet”, a portmanteau of “phone” and tablet, typically used to describe mobile devices with screens between 5″ and 7″ diagonally. It takes its name from the way the screen curves around its right edge like so:

galaxy edge edge

This curved right edge functions as a sort of second screen. By default, it holds the icons for often-used applications, functioning in the same way the taskbar in Windows or the dock in MacOS does. Apps specially written for the Note Edge can take advantage of it, using it as a place for a menu bar or toolbar for often-used functions. It’s even possible for an app to only use the edge — a stock or news ticker is one possible application, as is an alarm clock app that lets you see the time without having to take your head off the pillow. It’ll be up to developers to come up with creative uses for the edge of the Edge.

It’s got some nice specs and features:

  • A fast processor – either a 2.7GHz quad-core chip or a 1.9GHz octa-core one, depending on the country and carrier where it’s purchased
  • Lots of memory for a mobile device: 3GB RAM
  • Decent storage: 32GB, plus a micro SD slot that lets you add another 32GB
  • A large, high-resolution screen – a 5.6 inch quad super HD AMOLED display with 2560-by-1440 resolution
  • Two high-resolution cameras:
    • A rear-facing 16 megapixel auto-focus camera with “Smart OIS”
    • A front-facing 3.7 megapixel camera
  • A heart rate monitor and “S Health” software that uses it
  • The “S Pen” for accurate handwriting and drawing

No price or release date has been announced at the time of this writing, but it should come out this fall.

Here’s are some “hands-on” reports showing the Edge in action:

The Edge will be available through AT&T, Sprint, T-Mobile, and Verizon this fall.

Samsung Galaxy Note 4

samsung galaxy note 4

If the Galaxy Note Edge’s screen and flagship status don’t excite you, or if it’s outside your budget, you may want to consider the Galaxy Note 4. Apart from a very slightly larger conventional screen (it’s 5.7 inches, a tenth of an inch bigger than the Edge’s) it’s got the same specs as the Edge.

Sony Xperia Z3, Z3 Compact, and Z3 Compact Tablet

sony xperia z3 and z3 compact
Sony’s new flagship smartphone is the Xperia Z3, which takes the Xperia Z2’s features — 5.2 inch 1080p display, a 20.7 megapixel camera, and waterproofing — puts them in an aluminum frame, gives the processor a slight speed boost (2.5GHz vs the Z2’s 2.3), and adds a wide-angle 25mm lens and extra light sensitivity to the camera.

If you like the Z3’s features but want a slightly smaller version, you may be interested in the Xperia Z3 Compact. It has a smaller, lower-resolution screen (4.6 inches, 720p) and skips the aluminum frame, but its other specs, including the processor, 20.7 megapixel camera, and waterproofing, are the same as its bigger sibling’s.

z3 compact tablet

If you like the Z3’s features but wanted a bigger screen instead of a smaller one, the Z3 Compact Tablet is for you. It’s got the same processor, camera, and waterproofing as the Z3, but has an 8-inch screen and a larger battery (which can accommodate, thanks to its larger form factor, and which it needs, thanks to the larger screen).

gcm10

Owners of the PlayStation 4 gaming console will have an additional incentive to choose a member of the Z3 family for their mobile device: if a Z3 is on the same wifi network as the console, they’ll be able to stream and play games away from the console. You can even attach them to a Sony game controller!

Here are a couple of “hands-on” reports showing the Z3 family:

T-Mobile has confirmed that they’ll carry the Z3 when it launches in the fall.

HTC Desire 820

htc desire 820

The HTC Desire 820 is one of the first Android devices to ship with a 64-bit processor, which will enable it to run larger, more complex applications and even gain a little speed boost. These advantages won’t be realized until there’s a version of Android that supports such a chip, but that will happen with the upcoming release of Android L. It also features a 5.5-inch screen with 720p resolution, a rear camera with a 13-megapixel sensor, and for videoconferencing and selfie fans, an 8-megapixel front-facing camera.

Here are some “hands-on” reviews of the Desire 820:

Microsoft (a.k.a. Nokia) Lumia 830

lumia 830

Microsoft Devices — the organization formerly known as Nokia’s phone division — have refreshed their mid-level mobile device offerings with the Lumia 830, which they’re billing as “the affordable flagship”. With a decent processor (a quad-core running at 1.2GHz), 5-inch 720p display protected by Gorilla Glass 3, and a 10-megapixel rear camera with a Zeiss lens, this phone is aimed squarely at the middle of the market.

Here are a couple of “hands-on” reviews of the 830:

this article also appears in the GSG blog

Categories
Uncategorized

You’ll be shocked by the “sale” price for this mobile phone from 1989

1989 Tandy cell phone

Here’s a 1989 ad from Radio Shack Canada for the Tandy CT-300 mobile phone, which went on “sale” for $1499 Canadian, an $800 price cut.

What’s that worth in 2014 dollars? If we do the math based on this data:

Then:

  • The full price of the phone, $2299 Canadian, would be US$3689 in present-day money, enough to pay for 5 16GB iPhone 5S or Galaxy S5 smartphones, including sales tax.
  • The sale price of the phone, $1499 Canadian, would be US$2405 in present-day money, enough to buy 3 16GB iPhone 5S or Galaxy S5 smartphones, including sales tax.

Another big difference between then and now: 28 ounces, the CT-300 is a cinder block compared to today’s phones. The “Big Two’s” flagships are much lighter: the Galaxy S5 weighs 5.11 ournces, and the iPhone 5S weighs 3.95 ounces.

And finally, there’s that “40-number memory”. The photo for just one person in your smartphone’s address book would fill the RAM allotted to that 40-number memory several times over.

Ain’t modern technology grand?

this article also appears in the GSG blog

Categories
Uncategorized

A closer look at the quick and dirty Xamarin.Forms “Magic 8-Ball” app

magic 8-ball

enlightened lazinessIn the last installment of the Enlightened Laziness series (my new series of articles on cross-platform mobile development with Xamarin), I gave you the code for a slightly more complex “Hello, World!” app: a “Magic 8-Ball” app for Android and iOS. It’s pretty simple: the user is presented with a button which gives a random yes/no/maybe answer.

My options

I had a choice of approaches I could take when writing the app. I could’ve written it the standard way, which is diagrammed below:

standard xamarin apps

The standard way — the one that’s been available since Xamarin 1.0 — is to write some iOS-specific C# code (typically for the UI and other iOS-specific APIs and features), some Android C# code (once again, typically for the UI and other Android-specific APIs and features), and some C# code common to both versions, typically the app’s “business logic” and other code that’s specific to the app’s domain rather than the platform. It’s still less work than dealing with an iOS Xcode project with code in Objective-C and an Android ADT or Android Studio project with code in Java, but it’s still not quite the “write once, run anywhere” dream.

The other way — the way I chose — is new to Xamarin: the Xamarin.Forms route, which is diagrammed below:

xamarin.forms apps

With Xamarin.Forms, you’re coding to a single, platform-independent UI toolkit, and Xamarin does the necessary conversions during the compilation process. This sounds like the “write once, run anywhere” dream, and I’ll be spending the next few weeks playing with it. If you’ve used similar tools or platforms, you know that these sorts of systems are never perfect, and one of the things I’m going to be exploring is the set of trade-offs you have to make when using Xamarin.Forms for cross-platform development.

The full code for the Magic 8-Ball app

Here’s a screenshot of Xamarin running on my Mac that shows the structure of the Magic 8-Ball solution:

screen 1

Click the screenshot to see it at full size.

The solution has three projects:

  1. Magic8Ball: Contains the code for the app itself
  2. Magic8Ball.Android: Contains the necessary code for building the Android version
  3. Magic8Ball.iOS: Contains the necessary code for building the iOS version

If you look at the contents of the MainActivity.cs file in Magic8Ball.Android, you’ll see this. It bears a strong (if C#-flavored) resemblance to the sort of MainActivity.java file that gets auto-generated when you start a new Android project in ADT or Android Studio:

using System;

using Android.App;
using Android.Content;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

using Xamarin.Forms.Platform.Android;


namespace Magic8Ball.Android
{
	[Activity (Label = "Magic8Ball.Android.Android", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
	public class MainActivity : AndroidActivity
	{
		protected override void OnCreate (Bundle bundle)
		{
			base.OnCreate (bundle);

			Xamarin.Forms.Forms.Init (this, bundle);

			SetPage (App.GetMainPage ());
		}
	}
}

Note the last line of code: it contains a call to the GetMainPage() method of the App class. The App class is defined in the App.cs file of the platform-independent project, Magic8Ball.

There’s similar code in the AppDelegate.cs file in Magic8Ball.iOS. It looks like the AppDelegate.m or AppDelegate.swift file that gets auto-generated for new iOS projects in Objective-C or Swift, but in C#:

using System;
using System.Collections.Generic;
using System.Linq;

using MonoTouch.Foundation;
using MonoTouch.UIKit;

using Xamarin.Forms;

namespace Magic8Ball.iOS
{
	[Register ("AppDelegate")]
	public partial class AppDelegate : UIApplicationDelegate
	{
		UIWindow window;

		public override bool FinishedLaunching (UIApplication app, NSDictionary options)
		{
			Forms.Init ();

			window = new UIWindow (UIScreen.MainScreen.Bounds);
			
			window.RootViewController = App.GetMainPage ().CreateViewController ();
			window.MakeKeyAndVisible ();
			
			return true;
		}
	}
}

As with the Android version, there’s a call to App.GetMainPage() in the iOS version. That’s where your part of the app begins — let’s look at the App class and its GetMainPage() method.

Since it’s simple and the point of the exercise is to provide a quick-and-dirty intro to Xamarin.Forms, I’m foregoing the general rules about keeping interface and implementation separate (you shouldn’t stuff all the code into the view in a “real” app). The code for the entire “Magic 8-Ball” app is in the GetMainPage() method:

using System;
using Xamarin.Forms;
using System.Collections.Generic;

namespace Magic8Ball
{
	public class App
	{
		public static Page GetMainPage ()
		{	
			var answers = new List<string> {
				"Yes.",
				"Sure thing.",
				"But of course!",
				"I'd bet on it.",
				"AWWW YISSS!",
				"No.",
				"Nuh-uh.",
				"Absolutely not!",
				"I wouldn't bet on it",
				"HELL NO.",
				"Maybe",
				"Possibly...",
				"Ask again later.",
				"I can't be certain.",
				"Clouded by the Dark Side, the future is."
			};

			var randomAnswerSelector = new Random ();

			var layout = new StackLayout {
				Padding = 20,
				VerticalOptions = LayoutOptions.Center
			};

			var answerButton = new Button {
				Text = "I need an answer!",
				Font = Font.BoldSystemFontOfSize (30),
				HorizontalOptions = LayoutOptions.CenterAndExpand
			};

			var answerLabel = new Label {
				Text = "",
				Font = Font.BoldSystemFontOfSize (50),
				HorizontalOptions = LayoutOptions.CenterAndExpand,
				XAlign = TextAlignment.Center
			};

			answerButton.Clicked += (object sender, EventArgs e) => {
				answerLabel.Text = answers[randomAnswerSelector.Next (answers.Count)];
			};

			layout.Children.Add (answerButton);
			layout.Children.Add (answerLabel); 

			return new ContentPage { 
				Content = layout
			};
		}

	}
}

The Magic 8-Ball app’s UI structure

magic8ball's ui structure

As you can see in the code, the GetMainPage() method’s job is to draw the app’s main (and only) screen, which in Xamarin.Forms parlance is a Page. Xamarin.Forms’ Page class represents different things on different mobile OSs:

  • An Activity in Android
  • A View Controller in iOS
  • A Page in Windows Phone

Xamarin.Forms pages come in 5 different flavors:

xamarin forms page types

A page can contain a single child. Typically, this child is some sort of container for other controls.

For this app, our main screen is a ContentPage, the simplest type. If you’d like to find out about the other page types, see Xamarin.Forms’ Pages documentation.

Since a page can have only one child and we need two controls, we’ll need to make that child something that can hold other controls. That’s what the various subclasses of the Layout class are for:

xamarin forms layout types

For this app, we’ll use the StackLayout layout, which is used to lay out controls in a single horizontal or vertical line. We’ll give it two children:

  • A Button, which the user will tap to get a random yes/no/maybe answer, and
  • A Label, which will display that random yes/no/maybe answer.

As I showed in the previous article, Xamarin converts these UI-independent views into their equivalents on their respective platforms:

eightballforms screenshots

A walk through the code for C# newbies

If you’re familiar with C# programming, you can skip this final section. This is for the benefit of people who are new to C# or haven’t coded in it in a while.

Creating the set of answers

Here’s the first line of the GetMainPage() method. It defines the app’s randomly-selected answers:

var answers = new List<string> {
	"Yes.",
	"Sure thing.",
	"But of course!",
	"I'd bet on it.",
	"AWWW YISSS!",
	"No.",
	"Nuh-uh.",
	"Absolutely not!",
	"I wouldn't bet on it",
	"HELL NO.",
	"Maybe",
	"Possibly...",
	"Ask again later.",
	"I can't be certain.",
	"Clouded by the Dark Side, the future is."
};

C#’s var keyword lets you declare variables at the method level without having to explicitly specify their type — given enough information, the compiler is smart enough to figure out the type all by itself. After all, why type in this redundancy-filled line:

Thingy myThingy = new Thingy();

when you can simply type:

var myThingy = new Thingy();

If you’ve been coding in Swift, you’re familiar with this sort of implicit declaration.

C# has a built-in array type, but it’s generally recommended that you ignore it most of the time in favor of using the the List<T> type instead. Lists offer more features than arrays (even when you factor in LINQ), and unlike arrays, they’re resizable. Like arrays, the List collection has an initialization syntax that filling it simpler.

Setting up the random number generator

The next line sets up the random number generator by initializing a new instance of the Random class:

var randomAnswerSelector = new Random ();

This is pretty close to the way you’d do it in with Android in Java. Both the .NET and Java libraries have a class called Random which is used to generate pseudorandom integer and real numbers. In this case, we want to generate a random integer that we’ll use to select an answer to give the user.

Random number generation is a little different in Objective-C/Swift and iOS. There, we’d use some version of the arc4random() function from the standard C library  — most likely arc4random_uniform(), which avoids the “modulo bias problem” — to generate a pseudorandom integer.

Setting up the controls

These lines initialize the controls: the Button, the Label, and the StackLayout that will contain them both. These are pretty straightforward:

var layout = new StackLayout {
	Padding = 20,
	VerticalOptions = LayoutOptions.Center
};

var answerButton = new Button {
	Text = "I need an answer!",
	Font = Font.BoldSystemFontOfSize (30),
	HorizontalOptions = LayoutOptions.CenterAndExpand
};

var answerLabel = new Label {
	Text = "",
	Font = Font.BoldSystemFontOfSize (50),
	HorizontalOptions = LayoutOptions.CenterAndExpand,
	XAlign = TextAlignment.Center
};

Note the object initialization syntax. This:

var answerLabel = new Label {
	Text = "",
	Font = Font.BoldSystemFontOfSize (50),
	HorizontalOptions = LayoutOptions.CenterAndExpand,
	XAlign = TextAlignment.Center
};

is the equivalent of this:

var answerLabel = new Label ();
answerLabel.Text = "";
answerLabel.Font = Font.BoldSystemFontOfSize (50);
answerLabel.HorizontalOptions = LayoutOptions.CenterAndExpand;
answerLabel.XAlign = TextAlignment.Center;

It makes for less typing, which according to Corbato’s Law, is a good thing (as long you don’t make the code hard to read).

Responding to a tap on the button

Let’s define what happens when the user taps the button, which raises the Clicked event. We want to attach an event handler to the Clicked event that selects a random answer and sets the text of the label on the screen to that answer:

answerButton.Clicked += (object sender, EventArgs e) => {
				answerLabel.Text = answers[randomAnswerSelector.Next (answers.Count)];
			};

The => is C#’s lambda operator. The ability to define anonymous functions which can then be passed about is also available in Objective-C in the form of blocks and in Swift in the form of closures, and well as in Java 8.

Defining and returning the page

With the UI completely defined — layout, controls, and even an event hander — it’s time to lay out the content of the page and return it:

layout.Children.Add (answerButton);
layout.Children.Add (answerLabel);

return new ContentPage { 
	Content = layout
};

Keep an eye on this blog — I’ll be doing a lot of exploring of Xamarin and especially Xamarin.Forms and sharing my findings here!

Categories
Uncategorized

Feeling bored and evil at an airport? Try this prank.

power outlet sticker at jfk

Found via Joe Martinez. Click the picture to see the source.

Of course, if you’re caught doing this, it’s likely that a number of business travellers and people looking to charge their tablets for a long trip will draw and quarter you, and no court in the land will convict them.

This article also appears in The Adventures of Accordion Guy in the 21st Century.