Pages

Search This Blog

Sunday, December 2, 2012

Amazon's AWS re:Invent


Amazon held it’s first ever global customer and partner conference called re:Invent for it’s AWS (Amazon Web Services) business.  Six-thousand people from 60 countries were in attendance.  

Most people have heard of Amazon’s cloud service and the more highly technical amongst you are familiar with their compute and storage offerings.   AWS has come a long way, a very long way and they’re not stopping anytime soon.

At the core, AWS is a set of building blocks so organizations can put their infrastructure “In the Cloud” and deploy their applications into virtual environments.   AWS is now a BIG set of building blocks.   It would behoove any infrastructure engineer, software developer or product manager to become familiar with their services.    The fundamental principles of deploying in the cloud are similar to a private virtualized environment,  but there’s a lot more choice (which means although there is much more flexibility, only knowledge of all the services and design patterns will lead to the best solution) plus it’s a different language.  Knowledge of architecting in AWS will provide the appropriately robust and cost-effective solution.  AWS most certainly facilitates deploying for developers.

Here’s a very valid solution in AWS:  Launch EC2 with EBS behind ELB with your domain on Route 53 and your videos on Cloudfront, back up to S3 and your db on RDS with Multi-AZ…..   makes perfect sense… right?  Different language?

For those interested, I’ve listed the core AWS building block services (think Lego’s for data architects) at the end, in the areas of compute, storage, database, deployment & management, CDN, application services and network.   That will help unlock the key to the AWS language example given above.

The keynotes and sessions we attended were fascinating.    The hour plus keynotes can be seen here from Jeff Bezos, Werner Vogels (CTO), and Andy Jassy (SVP).

Powerpoint presentations from the various sessions can be found here.

Here’s an interesting statistic.  In 2003 when amazon.com was a $5B retail business the total amount of servers to support the back-end of that business is the same as what they deploy every single day now for AWS!   In S3 they have about 1 Trillion objects stored and they handle 800K requests per second. Talk about scale !  

Here’s another tidbit related to new products and feature releases.  In 2007, the first full year of AWS operations, there were 9 releases.  In 2011, there were 82 releases.  For 2012 there will be 150 new releases.  In terms of software releases into AWS that happens every 12 seconds..   yes, 12 seconds!

One thing that struck me was the amount of enterprise and government agencies that are using AWS.  AWS now has hundred’s of thousands of customers from 190 countries.   They have 300 government agency customers and 1500 educational institutions in addition to thousands of enterprise customers.  Their vast partner ecosystem has helped fuel their growth.    The keynotes and sessions included presentations from customers including Netflix, Nasdaq, SAP, Pinterest and more.

Major announcements on day 1 included a 25% cost reduction on S3 and two new services.    The first called Redshift, is their first data warehouse solution that scales to Petabytes in the cloud.  Compared to conventional data warehouse solutions Redshift should be ten times lower in cost with high performance.  The second is a new workflow service called Data Pipeline which is more focused on data-related workflows like backups, running analytics, generating reports, etc.

The link to the Jeff Bezos keynote above is actually a one hour fireside chat between Bezos and Werner Vogels.   The main theme from Jeff was focus on your customers and think long-term.   Towards the end he spoke about innovation and how the ability to spin up instances on demand allows entrepreneurs to increase their experimentation rate.   He also offered the following advice to entrepreneurs and those within existing companies:

-         -   Don’t chase today’s fads
-         -   Be passionate about what you do
-         -   Be a missionary not a mercenary
-         -  Start with your customer and work backwards.

Werner Vogel, Amazon’s CTO, took the stage to Nirvana’s music playing on day 2.
He said that AWS was first developed because Amazon needed to scale and they had difficulty dealing with peaks and valleys (think Black Friday).   Werner showed a chart which illustrated that to provision their “old” infrastructure for their peaks, on a yearly basis they were wasting about 40% of their server capacity.  If they considered 15% above peak for November they were wasting almost 76% of their capacity.    This is the primary benefit of the cloud.   You provision what you need on demand and scale up and down accordingly.

Other advice from Werner included:

-         -   Don’t think about resources in the “old” way; an EC2 instance is not a server
-        -    Decompose into small loosely coupled stateless building blocks
-         -   Automate your application and processes
-         -   Let business levers control the system
-         -   Architect with cost in mind
-         -   Protect your customer as a first priority
-        -    In production, deploy to at least two availability zones
-         -   Integrate security into your application from the ground up
-        -    Build, test, integrate and deploy continuously
-        -    Don’t treat failure (equip, system,etc) as an exception, treat it as a normal possible state

So all in all, it was a fascinating few days attending Amazon’s AWS re:Invent


Amazon’s core building block services include:

Compute:
   EC2 (Elastic Compute Cloud) for pay as you go compute capacity
   EMR (Elastic MapReduce) to cost effectively process vast amounts of data
   Auto-Scaling to automatically scale your EC2 capacity up or down (this is huge!)
   ELB (Elastic Load Balancing) automatically distributes traffic across EC2 instances

Storage:
   S3 (Simple Storage Service) fully redundant data storage
   Glacier is a very low cost storage for archive because retrieval is 3 to 5 hours
   EBS (Elastic Block Storage) for block level storage volumes with EC2
   Import/Export for getting data in/out of AWS the ‘old way’ on disk drives, etc.
   Storage Gateway for connecting on-premise appliances to cloud storage

Database:
   RDS (Relational Database Service) for MySQL, SQL server or Oracle set-up
   DynamoDB is a fully managed NoSQL db service
   SimpleDB managed NoSQL db service for smaller datasets
   ElasticCache to deploy, operate and scale an in-memory cache
   Redshift is a data warehouse solution

Deployment & Management
   IAM (Identity and Access Management)
   Cloudwatch for monitoring AWS services starting with EC2
   Elastic Beanstalk simplifies deployment and management through automation
   CloudFormation simplifies provisioning through templates and version control
   Data Pipeline is a workflow solution for data related jobs (backup, analytics, etc.)

CDN (Content Delivery Network)
   Cloudfront is the AWS CDN similar to Akamai or Limelight

Application Services
   CloudSearch is a managed search service
   SWF (Simple Workflow Service) is a workflow engine for your execution state
   SQS (Simple Queue Service) provides a hosted queue for storing messages
   SNS (Simple Notification Service) to manage notifications from the cloud
   SES (Simple Email Service) for scalable, bulk & transactional email sending
   AWS Marketplace to buy software that runs in the cloud
  
Networking
   Amazon Route 53 is a robust DNS (Domain Name Service)
   VPC (Virtual Private Cloud) lets you provision a private, isolated section of AWS
   Direct Connect simplifies establishing a dedicated network connection to AWS

And more………



End of day tech party...  Amazon style

Sunday, November 25, 2012

Python and Coursera


What do these things have in common?   I’ll start with Python which is an interpreted, interactive, object-oriented programming language.  Python is great for both shell and web scripting and is making it's way into every facet of computing from Google to video games.   A very popular application development platform called Django, is based on the Python programming language.

Coursera.org is an incredible company which offers free on-line university courses to millions  of students around the world.  Is this the future of education?

Coursera.org is part of a new movement referred to as MOOC’s (Massively Open Online Courses).    They have the potential of reaching and teaching hundreds of thousands of students per course.   Others in this space include edX and Udacity.  The courses are not offered for university credit but in most cases, by successfully passing the course you’re given a certificate from the university.

Back to Python…     So when I first heard about coursera and started perusing their course offerings, I was blown away at the variety and quantity of courses from major universities around the US (and Canada).   I wanted to take everything !   Courses range from Science, Psychology, Computing, Technology, History, Health, Music, etc, etc. from top universities.   I settled on a course called “Learn to Program: The Fundamentals”, from the University of Toronto,  which teaches Python.   The lectures are well produced streaming video (which can also be downloaded), with weekly homework assignments, programming assignments, quizzes and a final exam to complete the course.   It runs on a weekly basis (this course was 7 weeks) so the student is forced to keep up.   An interesting aspect is a discussion board where students from around the world can pose questions, comments, etc.   The end of course statistics showed 38,000 students took the first quiz and over 8000 passed the final exam and course.
In this case they used an automatic grader to help with the programming assignments.   They covered the essentials of Python including elementary data types (numeric types, strings, lists, dictionaries and files), control flow, functions, objects, methods, fields and mutability.  The three programming assignments included a time zone converter (UTC and local time), a DNA sequencing program and a board word game.    

So of course a second Python course was offered shortly after the first began called an “Introduction to Interactive Programming in Python”, by Rice University.    This course is focusing on event-driven programming for games, etc. and in fact the weekly programming assignments include building a Pong game, Memory game, Blackjack game, Spaceship game and more.    This course does not have an autograder and relies on peer review to grade the programming assignments (each student has to grade 5 other students submission to have theirs graded)…

And of course a third “Python” course started shortly after that which focuses on the applications used by hedge funds and is called “Computational Investing, Part 1” by a professor at Georgia Tech.   I most definitely do not recommend taking 3 courses simultaneously.   It’s too much for weekend work.  I had to fall behind in the second course to start the third and now that the first is over I can catch up with the second.  One or two courses is a sane way to go.    So the third course is again very different and it utilizes Python and Python modules for quantitative analysis software applications. I found I needed to dust off the old Unix command skills because configuring the environment to work with all the Python modules took some effort.    The software will be used to analyze historical performance of portfolios and equities and build a market simulator.  

So I’m not quite sure how MOOC’s will affect higher education, but it is obvious that it will in some way.   In the meantime, it is a fascinating phenomenon with appealing content.   See this article for more information :


On another note, I have tremendous admiration for each of the professors who volunteered their time to put together a quality MOOC experience.    I think the appeal was irresistible for them.

For more information on Coursera and potential business model's going forward, see this wiki:

http://en.wikipedia.org/wiki/Coursera#Business_model

For more on Python, look here:

www.python.org



Atlantic City : a week before Hurricane Sandy hit

Atlantic City : a week before Hurricane Sandy hit

Wednesday, August 29, 2012

HTML5 vs Native Apps.. Do you really know which is better?

Every organization struggles with the most effective way to publish their content across the web, tablets, smartphones, etc.    HTML5 has been touted as the "silver bullet" to solve that problem.  Like anything else however, the answer isn't always that easy or obvious.

In some cases, HTML5 can solve the problem, in some cases you have no choice but to go native (native apps that is..  apps written in  the native code base of that particular device).

Below is an outstanding writeup on this subject from our Senior Developer of Mobile Apps, Scott Newman.    Scott is always on top of the latest technologies and has a keen understanding of the details and nuances between them.   Hope you find this helpful.

"HTML5 and Native App Development Comparisons" by Scott Newman

Here's an executive summary of the decisions that need to be made when deciding between HTML5 and native mobile app development. This isn't meant to be an exhaustive study of all the pros and cons; if more information is needed, I will be happy to go into greater depth.

Definition

The HTML5 moniker gets thrown around loosely. Technically, it refers to the fifth revision of the HTML standard, but it is commonly used as an umbrella term to describe a combination of HTML, CSS, and Javascript technologies to render modern web content.

Native applications consist of code that is compiled and installed onto a device. Apple iOS applications are commonly coded in Objective-C and compiled using Xcode; Android applications are commonly code in Java and compiled with the Eclipse toolchain. The terms "app" or "apps" usually refer to native, installed applications.

Webapps or web applications consist of code written in web presentation technologies: HTML, CSS, and Javascript. They run in a web browser on the device and do not require the compilation step. On iOS devices, special HTML tags can be used to remove the browser chrome (the address bar, status bar, bookmarks, buttons, etc. that surround the area where the web page is displayed) and status bar, allowing the web page to be displayed in full screen mode and launched from an icon on the springboard. (The Springboard is the iOS "desktop" screen where the icons are displayed) 

HTML5 Apps are native applications that usually consist of a full-screen web browser window with no chrome around it. Inside the web browser, content is rendered using web technologies such as HTML, CSS,  Javascript, SVG, or Canvas. (Usually HTML) Most often, the HTML content resides on the device as part of the application data to prevent the latency of URL calls. 

The HTML5 Panacea

A popular point-of-view in mobile development is that HTML5 solves the "write once, run anywhere" challenge. The idea is that developers can spend a few minutes building a native shell application consisting of a single browser window on multiple devices, then serve a common set of content files to all the target devices. With the proper design, the content will look nearly identical across all devices and you don't have to spend time on device-specific code.

This idea sounds great in theory, but the reality is far from simple. Differences in HTML capabilities, screen size/resolutions, CSS rendering quirks, and HTML rendering engines (such as webkit, gecko, and IE) make achieving a consistent look across devices extremely difficult. It's hard to do on the desktop and it's just as hard on a mobile device.

HTML5 Frameworks

A handful of frameworks exist to make developing HTML5 applications very easy, Cordova (formerly named PhoneGap) is the most popular. Cordova takes care of the native part of the implementation for each device, freeing the developer to spend their time working on the content. You download the code for your target device, open the files, and drop your HTML code into a specific folder. Cordova offers an cloud-based build service that allows you to send your code to their servers where it is compiled into an installable application. 

Frameworks such as Cordova often expose and abstract hardware APIs with Javascript. For example, many devices have accelerometers or gyroscopes but lack a consistent method of reading their values. Cordova takes care of how to "talk" to each device's sensors and adds new method's to Javascript's navigator object, such as navigator.accelerometer.getCurrentAcceleration().  (The browser's navigator object does not have an accelerometer property by default, Cordova adds it) Similar properties exist for camera, compass, contacts, etc. 

HTML5 Development: Speed and Cost

In recent years, iOS and Android developers have experienced very high demand for their skills, driving up the cost and demand for this talent. By comparison, web developers are much more plentiful and commonly offer their services at a lower rate. (and they have more availability) If a native app and HTML5 app take the same number of hours to develop, the development cost for the latter will be lower. If you need to develop for both iOS and Android, the development cost might double when the developer creates different codebases for each platform. 

Native application development, especially custom interfaces and code, are much more difficult and time-consuming to develop as compared to web development. The initial development is often cheaper with HTML5 apps.

Dynamically Updating Applications

If your HTML5 app designed to be able to call Internet URLs for its content, it is possible to update what the end user sees without recoding and recompiling the application. (and then sending the update to the platform's app stores) Some HTML5 applications are able to update their layouts, look-and-feel, and even change functionality by modifying HTML code and FTPing it to an online web server.

The Dark Side of HTML5 Development: Going Beyond the Demo

So far, everything about HTML5 development sounds great: cheaper developers, shorter development cycles, easier updating, and the ability to target multiple platforms. Why wouldn't everyone do this? In minutes, you can have a demo-able prototype that works well enough to convince management that this is a slam-dunk and the rest of the world is crazy for spending big bucks on native app development.

Indeed, if you are targeting a small amount of devices, have a content-heavy application (as opposed to something like a game that requires custom drawing and layouts) and offer a concise amount of easily organized content, HTML5 app development might be a very good solution for your needs. Many real-world applications, however, don't fit nicely into this set of requirements.

Rendering Speed

The first place that HTML5 applications show their limitations is in rendering speed. Rendering is the process of turning the code into something that can be displayed on-screen. 

Native applications are compiled, so much of the process of turning human-readable code into something the CPU understands was done when the app was first developed. Often dynamic content is displayed in compiled applications, but the code is usually designed to efficiently transform this data into on-screen content. Additionally, the screen drawing is optimized and often has a dedicated graphics chip to help complete this task as quickly as possible. (Remember that 30-60 times per second the screen is redrawn, so graphics rendering is one of the most intensive processes that is happening)

HTML5 applications don't have the benefit of pre-compilation*. When the app loads, the HTML content's markup code must be read by the browser's rendering engine and turned into a document object model (DOM) that the browser knows how to draw on the screen. This process of interpretation is very fast, but it can be enough to make an application feel sluggish, especially when the process must be repeated many times. Additionally, this step requires a fair amount of RAM to perform, and mobile devices don't have nearly the amount of memory that desktop machines do.

* The authors of the web rendering engines are constantly working to speed up the process of turning HTML markup and Javascript into byte code, and there are attempts at performing compilation-like steps inside the browser.

Native applications can perform many optimizations to increase the speed and reduce the amount of memory required to render content. HTML5 applications, however, can only be as fast as the underlying web browser, and there are very few tricks beyond optimizing your HTML markup that can be done to speed it up after that.

Native User Interfaces

Another major problem with HTML5 applications (especially cross-platform ones) is the lack of native UI controls. Anything displayed on-screen is either a browser-rendered control, an image, or a CSS-created layout. If you want to present a look-and-feel that is consistent with native applications, you'll have to build these yourself using images and CSS. 

For example, native iOS applications often display a navigation bar with a title and back button to allow a user to navigate through sections of an application. With native development, you get these "for free" with the software development kit (SDK). If you want to use this technique inside of an HTML5 application, however, you will have to create images and CSS that mimic the native controls. 

There are a number of projects that help you do this, and often they are nearly indistinguishable from the native UI. When you want to do this for a cross-platform application, you'll have to write Javascript logic to detect what platform the user is on and which set of UI "widgets" to use - iOS, Android, etc. Choosing to render an iOS-specific checkbox vs an Android checkbox is pretty easy, but some techniques aren't as easily swapped - for example, iOS presents tabs at the bottom of the screen, where Android presents them at the top. If you are going for a native "feel", you'll have a lot of work to do to get it right on all platforms.

Often HTML5 developers work around this problem by not trying to create a UI that looks exactly like the UI that is native to a specific platform, instead providing a generic UI that can be used on multiple target platforms. (the jQuery Mobile project does this very nicely) The downside to this approach is that users will be less familiar with the controls than the consistent ones that are idiomatic to their platform.

Screen Size and Resolution

A benefit of iPhone web application development is that you can count on a screen that is 320x480 pixels*. Android device, however, are not consistent - you will need to account for many screen sizes. This can be extremely challenging when developing pixel-perfect layouts with HTML and CSS. (To be fair: This is also very challenging when developing native apps for Android)

* An iPhone retina screen has 640x960 device pixels, but you still develop HTML and CSS as if there are 320x480 pixels and the webkit rendering engine takes care of mapping the pixels properly, though you will still have to create multiple versions of each image at different resolutions

Access to Device-Specific Hardware and Features

When developing applications that run inside of a browser, you don't have access to everything the device offers. The iOS webkit browser, for example, has no ability to access the user's address book, calendar, or photo library.* These limitations can be overcome by frameworks like Cordova - the authors of the framework have added "hooks" into the device's hardware and given developers a way to access them through Javascript. When a developer calls a Javascript function such as navigator.compass.getCurrentHeading(), the underlying native application (the one showing the web browser) uses its access to the compass to get the heading, then it sends it back through Javascript to the code that wanted the value. 

These hooks are extremely valuable, but it requires the authors of the framework to constantly stay on top of changes and additions to the platform SDKs and add them to their code. If a feature isn't of a high enough priority for the community, you might have to wait for the features to be added (or pay someone to add them) before you can use them in your HTML5 application.

* Browser access to the photo library is being added to iOS6

Stop and Look Where You Ended Up

If you've accounted for the items noted above and created an HTML5 application that looks consistent across many devices and platforms, consider what you've had to do to get here:
Write logic to handle multiple screen sizes and display images and CSS appropriately
Written separate user interfaces and layouts for each platform you are targeting
Wrote multiple navigation schemes that match each platform's user expectations
Wrote logic to show/hide features that are not available on certain devices
Created multiple versions of each image to handle retina displays
Hired a web developer who is familiar with the intricacies of cross-platform mobile development
An argument could be made that you didn't save a lot of time and effort to get this far.

The Facebook Dilemma

Described above is exactly what Facebook has been doing with their mobile applications for the past few years. They have worked extremely hard to provide a consist experience across a massive variety of devices and platforms. At the end of the day, users still complained loudly about the speed and sluggishness of the applications. In 2012, they rewrote their iOS application from scratch to provide a better experience to their users.

Here are some links describing the effort:
A Hybrid Approach

There is a way to save development time when creating native applications, especially ones that deliver a lot of text-heavy content. I call it the hybrid approach:

Write the chrome of your application as a native application. Make your tabs, menus, navigation, tables, etc. using the native controls and layouts of the platform. Make your application "feel" native to the platform it's being used on so that users are familiar with the way it works and operates. Use native performance optimizations to ensure that animations and scrolling feel responsive and fast. On the detail/content screens of your application, render that content using HTML, and make it reflow properly so that it can be displayed at multiple screen sizes and resolutions.

For example, say you have an application that allows a user to browse a library of information about birds. The user will be able to filter, search, and scroll through categories and lists of birds, then they can view the entry about a specific bird with text and photographs. The UI to filter, search, and scroll should be native to the platform - this will ensure it renders quickly, efficiently, and using UI idioms that the users are familiar with from other apps on their device. When it comes time to create the content pages, write them once in HTML and include them in the app on each platform. You'll save a lot of time by writing the 1000 detail pages just once, and you'll spend a few dozen hours writing the chrome/shell of the application for each platform. As long as the text and images reflow properly in each web container, you'll save yourself the hassle of trying to create multiple copies of each page for every platform you are targeting.

Where Does HTML5 Fit?

At this point, it sounds like we've completely written off HTML5, but that isn't true. For the reasons outlined above, HTML5 is a poor choice for many native application development projects. There are a few scenarios where the technology can work very well:
  • You are deploying to a limited platform of devices (non cross-platform apps)
  • Your performance requirements are light
  • You don't need deep access into hardware/sensors/APIs that the web browser can't access
  • You aren't trying to emulate native UI
  • You are developing the early version(s) of your application as prototypes
If you are only deploying to a single platform, such as the iPad, then the cross-platform UI considerations outlined above don't really apply. If your content does not require lots of scrolling and heavy screen drawing, the sluggish performance of HTML rendering won't be as much of an issue. If you are primarily displaying content and media, then the lack of access into the hardware sensors shouldn't be much of a concern. If your UI is custom (and not trying to mimic native UI controls) then the concerns over non-standard UI elements aren't a consideration.

If you are prototyping your applications, HTML can be a much faster tool than native development, and it is much easier to make changes to without recompilation and redeployment. You could also develop the app in HTML to get it into the hands of customers, gather feedback, and see what customers want. If nobody complains about the performance and the app functions well enough to meet users' expectations, then perhaps the extra pain of native development wasn't necessary. As the programmer/author Donald Knuth said: "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil."

Summary

In summary, there is no "right" and "wrong" for HTML5 and native app development. There are pros and cons to each approach and a thorough set of requirements must be analyzed before making a decision. Beware the trap of thinking HTML5 is an "easy win"; there are circumstances where it can be a great alternative to native development and others where you'll end up down a rabbit-hole of target-specific optimizations and hacks.



Saturday, June 23, 2012

Apple's World Wide Developer's Conference (WWDC)


One of my colleagues, and one of our top software developers/architects attended the 2012 Apple Worldwide Developers conference in San Francisco.

This conference is so popular it sold out within 20 minutes of the announcement.

It is the most popular travel destination for anyone interested in technology !

Luckily, Scott Newman is very nimble and he secured a spot to represent National Geographic.

Much of what was discussed at the conference is under a tight Non-Disclosure Agreement (NDA), so it cannot be discussed here,  but Scott has summarized the highlights from the Monday keynote address which is available in the public domain.

Below are the highlights from Scott:


Apple's 23rd Worldwide Developer Conference was held in San Francisco, California, from June 11-15, 2012. Apple's latest operating system for iPhone and iPad, iOS6, was announced. The 8th major release of the desktop operating system, OSX 10.8 "Mountain Lion" was also announced. National Geographic took home an Apple Design Award in the iPhone category for the National Parks Application.

iOS Adoption

iOS 5, the most recent version of the iPad and iPhone operating system, has an 80% adoption rate in 9 months. The latest version of the Android OS, 4.0 "Ice Cream Sandwich" has a 7% adoption rate in the same time period. (VP Scott Forstall referred to it as "Google's Dairy Product")

iOS6

The latest version of the iOS will be released around September. (It will not be available on iPad 1st-gen devices) Overall, this could be considered a minor incremental release with more "under the hood" changes for developers. While there aren't many visible enhancements for users, they will undoubtedly benefit from the 3rd party app developers who are better equipped to develop very stable applications more quickly than before.



Mountain Lion

Apple's latest desktop operating system, OSX 10.8 "Mountain Lion" is scheduled to be released in July. High-level feature enhancements include better iCloud integration with iOS devices, improvements to the mail client, a notification system to better control pop-up messages, Game Center support for desktop gaming (and compatible with iOS-based Game Center titles), Power Nap (which will let certain background processes run while the computer is asleep), and built-in diction support for all text-input. (Wherever you can type, you can dictate - applications will not have to be rebuilt to support this feature)

Safari Improvements

Safari 6.0 will be released with Mountain Lion and a developer preview is currently available. Performance improvements to the Javascript Engine ("Nitro") were announced, some HTML5 Audio and Video improvements, and an "iCloud Tabs" feature that will allow a user to share open tabs between desktop and iOS devices. (for example, on your iPhone you can view all the tabs you have open on your desktop)

Siri Enhancements for iOS6

Siri, the voice-controlled personal assistant, will be available on the iPad 3rd-generation with iOS6. In addition to enhanced local search reviews from Yelp, users will be able to get sports and movie information via voice search. No developer API for Siri was announced.

Social Media Integration with iOS6

In addition to the built-in Twitter functionality, (released with iOS5) Facebook and Sina Weibo (a Chinese social network) will also have built-in support for sharing. This will make it easier for apps to leverage social sharing without having to add and configure additional software libraries, and users won't have to keep re-entering their credentials when they want to share via these services.

Map Updates for iOS6

Apple has replaced Google maps with their own technologies featuring vector tiles, Yelp integration, and 3D maps. Turn-by-turn route guidance with Siri support is also available. These features are available in iOS6 only. Traffic information is being anonymously "crowd sourced" to help provide realtime traffic data based on the current speeds of devices with the Maps application open. There are 3D maps available for iPhone 4S and iPad 3rd-gen devices with a "flyover" feature that allows rotation and panning in 3D space.

PassBook for iOS6

There is now a built-in application to manage a collection of tickets, cards, passes, and coupons. 3rd party apps can design their own content to go into this application. The content will be available from the lock screen for quick access via time-baed or geofence activation. (for example, your Starbucks card can pop up automatically when you enter a Starbucks location or your train ticket will pop up as the boarding time approaches)


Photo Enhancements for iOS6

You can now share your photo stream with other users. (Via iOS or the web) It is now possible to add photos to email messages in-line. (instead of having to start a new email to send a photo) Photo uploads are now available in Mobile Safari with the <input type="file"> tag. This is great for mobile web applications that want to allow user-submitted content without having to deploy a native application.

Privacy Enhancements for iOS6

Applications will now have to ask for explicit permission to access photos, contacts, calendars, and reminders. (Previously, granting permission for location allowed photo library access) These permissions are individually revokable by the user via the standard settings application.

VIP, Do Not Disturb, and Call Rejection Features in iOS6

A new feature in iOS6 is the ability to designate certain contacts as "VIPs". There is a separate VIP Inbox in the mail client and customizable notifications. Another interesting feature is "Do Not Disturb", which will prevent all incoming calls, messages, notifications, etc. during the hours you specify and/or on-demand via the settings application. Items will still arrive, but no sounds will be emitted and the screen will not light up (a great feature for nighttime) during these periods. There is a customizable whitelist of contacts that can bypass these restrictions and the ability to set a 3-call bypass. (If someone calls 3 times in a row, they can get through). Incoming calls on iOS6 will now display a "reject call" button that will allow you to automatically send a canned response to the caller. (Such as "In Meeting, Will Call Back Later")
FaceTime for iOS

One notable enhancement is that FaceTime video chat will now be available over cellular networks instead of wifi-only.

Apple TV 

Despite persistent rumors leading up to the conference, nothing was publicly announced related to the Apple TV.

Apple Design Award

National Geographic won an Apple Design Award in the iPhone category for the National Parks application.



Retina Macbook Pro

The first high-density display (Retina) Macbook Pro was announced. The 15" screen packs a 2880x1800 pixels. USB 3 and Thunderbolt are both supported. (and the USB port is universal, there is no separate port for USB3)






Public Note: The information above was discussed during the Monday keynote address and is not covered by NDA. No Apple confidential material is discussed above.

Saturday, June 16, 2012

IBM CMO+CIO Leadership Exchange

My colleague and I, Amy Maniatis, Chief Marketing Officer at National Geographic, had the pleasure of attending IBM's, by invitation, Leadership Exchange for CMO's and CIO's. 


It was an enlightening and inspirational few days mixing with colleagues from companies in numerous industries, but all facing similar challenges.  It highlighted the importance of CMO's and CIO/CTO's partnering closely in today's fast paced and fast changing environments.


Below is our report on the experience: 


 Hello Marketing & Tech teams! 


 Stavros and I had the opportunity to “step back” for the past day and ½ at IBM”s first ever CMO + CIO conference in NYC and it gave us an opportunity to take a 30K foot view at what we’re doing relevant to other large brands, get feedback from a formidable group of other CMO’s & CIO’s and hear from the most senior leadership at IBM about the future of “big data.” 


 Overall the conference confirmed that what we’re doing together on our brand and membership is RIGHT ON, (and if we’re wrong we’re in very good company with other enduring brands like Amex, Kaiser, Gap, Verizon, Aetna. 


 We both left yesterday feeling excited and charged about our strategic direction, and although we did not hear anything HUGELY new, the value in our time spent with this group was in the consistency with which CMO’s and CIO’s expressed their mandate across multiple industries. We left with strengthened resolve that what we are doing is right and is urgent. 


 Here are our notes, happy to share or discuss further. 


 • Staggering facts: 1 trillion connected devices in 3 years, today over 8X the world’s libraries are uploaded daily 


 • Customer Centricity: We’re all trying to move from a product centric to customer centric view - but we’re challenged by either management, culture, legacy or all three. We heard from companies as old or older than us, and they are all trying to do the same thing (Aetna, 160 yeas, CitiBank 200+ years, Amex, IBM 100 years) Terry Jones, founder of Kayak asserted customers expect a “1 to 1 relationship in EVERY industry.” He had a phone booth installed at Kayak that listened in on the customer service calls … his employee mandate was that employees had to spend a little time in the phone booth each day. 


 • Marketing and technology on frontline of revolutionary change


We’re at the beginning of a new “cognitive computing era” in technology and IBM describes this as the beginning of a 3rd (30 year) era preceeded by “mechanical computing era” (40’s 50’s 60’s) , then “programmable computing era” (70’s, 80’s & 90’s). This means the CIO & CMO’s objectives merge and they share spheres of accountability. Marketing systems are enterprise systems. In this era of data-driven marketing and digitally empowered customers, the CMO and CIO can no longer perform on separate stages. 


 • URGENCY “Once in a generation, change is happening and there will be winners and losers” Kenneth Chenault, CEO, AMEX. Ken explains that once customers see what they can have, they’ll want it everywhere… we have 12 to 36 months to create this change. We need to construct and/or transform the infrastructure to facilitate this change. Start with a Proof of Concept (POC). Get the foundation in and consider business models. Great companies see the need for change and attack it. It’s harder for companies that need to “recreate” rather than “create” and for us, staying true to brand & mission is imperative. Amex & Nat Geo similarities are a little uncanny as Ken explains the need to ignore the “form factor” (for them the card) and to focus on Membership and Services. 


 • 3 key “takeaway’s “ from Ginni Rometty (IBM CEO) 
    - Whole new level of marketing optimization 
    - Need to develop systems of engagement– orchestrating   
            interactions 
    - BE AUTHENTIC – need to very clear and true to our purpose 


The conference was incredibly well run, using technology to foster an interactive dialog throughout the sessions. Both Stavros and I were given an ipad at registration pre-loaded with apps to facilitate the sessions and upon leaving, IBM generously gifted these to attendees. 


 We'd like to use these ipads as a reward for 2 members of our teams who you think model our NG values best. More to come on that! 


 Thank you all for affording us both the time out of the office to engage with an incredible group of industry peers! 


Best, Amy & Stavros




Ginni Rometty (IBM's CEO)