| Comments

Recently I’ve been writing a few XAML Behaviors for Callisto and looking to take some contributions on this front as well.  One thing that I realized is that this will bring in a new dependency for my toolkit.  I’m still trying to figure out if I want to do that or not, but that’s not what this post is about.  My #1 consumers of Callisto are using the NuGet package.  I also distribute Callisto through the Visual Studio gallery as an Extension SDK. 

What’s the difference you ask?

Extension SDK vs. NuGet package

While not an official answer, this is my basic definition I always describe to people.  It is not complete comparing all features but defines what I see as the core difference between the two.

An Extension SDK is installed per-machine and allows you to install it once and use for multiple projects.  It is deployed through the Visual Studio extensions mechanism (VSIX) which has a feature that allows for you to be notified if a version is updated in the IDE.  This is a proactive update that even if you just have VS open you get a little toast if any of your extensions are updated…very handy.  Extension SDKs also have some cool features about enabling you to supply design-time assets that don’t ship with your application and also provide some nice per-architecture deployment capabilities rather easily.  Extensions SDKs have great support for native projects as well.

NOTE: People sometimes confuse VSIX == Extension SDK.  VSIX is a packaging and installer mechanism, not an SDK only.  You can have a VSIX that deploys a tool, templates or an SDK. 

A NuGet package is installed per-project when added as a reference to your project in Visual Studio.  You can add them similarly through the “Add Reference” type dialogs (although in VS it is called Manage NuGet References) and once you select your package it is installed (per the package’s manifest instructions) into your project.  If you want to use the package for multiple projects, you must repeat this step for each project.  One benefit of the NuGet route is that it does become a part of your project, you can check it in to source control, etc.  One disadvantage currently is it doesn’t do the design-time aspects and the per-architecture deployment aspects well.

You might look at these differences and wonder why you would want to take a dependency on a per-machine item in a per-project package.  And you’d be right to ask that question.  Again, I’m still wondering myself.  However one thing to note is some Microsoft-delivered SDKs are delivered shipped with Visual Studio as Extension SDKs, as is the case with the Behaviors SDK.  So you can’t have VS installed without it, but NuGet also can be used in non-VS scenarios as well.  This can be complex depending on your package/needs.  For mine, this might be acceptable.

Telling your NuGet package to include an Extension SDK

I admit that this title is a bit misleading, but allow me to explain first.  NuGet allows for you to extend the package install a bit by including a PowerShell script to run during install (and uninstall) of the package.  This script can give you context of 4 things in your project/tools environment: install path (where the package is being installed), tools path (the folder where the script will actually reside), package (the NuGet package object) and project (a reference to the IDE Project instance).  It is this last piece that helps you manipulate the project structure.

In Visual Studio 2012 a new interface was added to the VS project extensibility to accommodate automating adding Extension SDKs.  This new interface, References2, includes a new method AddSDK.  This is the hook where you can add Extension SDKs.

NOTE: The other methods of Add() are still supported and would allow you to add references to files, GAC assemblies, etc.

The AddSDK has 2 parameters but only one is required, the identifier of the Extension SDK (it is weird to me that the first param is optional but oh well).  The ID of the Extension SDK is the name of the SDK (as defined by the deployed folder or the ProductFamilyName in the SDKManifest.xml) combined with the version number.  A final string to pass in the second parameter of AddSDK is then something like:

BehaviorsXamlSDKManaged, version=12.0

Now that we know this format we can add this to our NuGet install PowerShell script.  Here’s an example of what one might look like:

param($installPath, $toolsPath, $package, $project)
$moniker = $project.Properties.Item("TargetFrameworkMoniker").Value
$frameworkName = New-Object System.Runtime.Versioning.FrameworkName($moniker)
Write-Host "TargetFrameworkMoniker: " $moniker
if ($frameworkName.Version.Build -ge 1)
{
    Write-Host "Adding Behaviors SDK (XAML)"
    $project.Object.References.AddSDK("Behaviors SDK (XAML)", "BehaviorsXamlSDKManaged, version=12.0")
}

Notice the first line with the param() function.  Per the NuGet documentation this is required to get the environment objects like $project.  Now in line 8 we have a reference to the VSProject, then can get at its object model, get to the references and add one to an Extension SDK, in this case the Behaviors SDK installed with Visual Studio 2013.

The tricky thing with this approach is that when someone were to remove a package you may be tempted to remove the SDK reference as well.  Since there is not really good tracking whether someone may be using the reference, it is advised against that approach.  Your app developer may be using that Extension SDK now outside of your package and you have no reliable way of knowing that.  What you can do is alert the developer during uninstall:

param($installPath, $toolsPath, $package, $project)
Write-Host "Callisto was removed, however Blend SDK (XAML) was not
 as it may be a dependent reference on other things in your project.
  If you do not need it, manually remove it."

Not awesome, but helpful at least to output some data to the developer.

Summary

Again, while this may be unconventional and some NuGet purists will scoff at the mere suggestion of doing something like this, it is good to know this is easily available.  My goal is to help developers (including myself) and if there are ways to merge these two worlds of Extension SDKs and NuGet packages until (if?) they unify then by all means I love helping make my productivity better.

Hope this helps anyone!

| Comments

Ok, this is getting ridiculous.  First the removal of the ‘I Am Rich’ application (which whatever your thoughts on the app itself, it didn’t violate any rules, just that the powers that be at Apple didn’t like the pricing scheme), and now others are being prevented from joining the AppStore.  Here’s the latest two I’m aware of:

Podcaster

Podcaster is a native iPhone app developed by someone in the Apple developer program and not using anything that isn’t permitted in the terms and conditions of the SDK.  It provides the ability to search/add/download podcasts from your iPhone without having to have any software on a desktop sync for updated downloads.  The developer, Alex Sokirynsky, has let the world know of the reason his app was rejected by the AppStore:

“Since Podcaster assists in the distribution of podcasts, it duplicates the functionality of the Podcast section of iTunes.”

Actually it provides more functionality, Apple…is that your problem with it?  That users are able to add new podcast subscriptions from their iPhone and not wait to get to their iTunes sync machine because you don’t allow guest syncing from iTunes?  And so what if it duplicates the podcast section of iTunes?  This is an iPhone app, not an iTunes extension.

MailWrangler

The latest to get hit is MailWrangler, a native iPhone app that enables access to GMail accounts.  The developer submitted the app on July 17th and received a reply more than 30 days later indicating:

“…Your application duplicates the functionality of the built-in iPhone application Mail without providing sufficient differentiation or added functionality, which will lead to user confusion…”

There was also other feedback given to the developer, Angelo DiNardi, that seemed appropriate (no way of editing the account) to which he agrees and seems like open to fixing.

So the problem seems to be duplicity of features according to these two rejections.  Really?!  So all those calculator applications (currently over 30 doing a search on ‘calculator’) don’t duplicate the built-in calculator functionality?  What about the 10+ weather applications that seemingly provide the same features as the built-in Weather application?  What about the StockWatch app ($2.99) that provides what looks like identical functionality of the built-in Stocks application?

      

C’mon Apple, this is getting ridiculous.  Your are letting the likes of “DaysTo Christmas” in the AppStore ($0.99 by the way in case you can’t look at a calendar), but not allowing me to choose if I want to use a different mail app or download podcasts wirelessly?  This is getting absurd.

Are they violating the terms?  I don’t think so.  A look at the iPhone SDK Terms shows no restrictions on the types of applications that can be built (except for real-time route guidance/automation) only noting that applications “…may only use Published APIs in the manner prescribed by Apple and must not use or call any unpublished or Private APIs.”  Neither of these applications do that!  It seems there is a conflict in the SDK Terms and the AppStore Terms…which I haven’t seen – anyone have a link to AppStore-specific terms that might indicate that no duplicate functionality can exist?  I’m guessing it isn’t there.

Apple – either enable alternate distribution channels for iPhone applications, or stop rejecting my choice as a consumer because it might be better functionality than you are providing.  Guess what, that’s what developers do – find ways to increase the value of the platform.  You shouldn’t have a developer program if you think people aren’t going to find ways to implement new functionality that may compete?  What gives Apple?  Why are you deciding what I can/can’t install when all other things being equal (i.e., not violating any terms of any SDK))?!  I can’t believe there is no developer outrage beyond these two developers. 

Apple is increasingly falling out of favor with the hi-tech crowds by doing things like this without explanation.  I only see this increasing.  Someone in Steve Jobs’ organization needs to get a wake-up call and start making some changes.  I think the easiest change for the AppStore would be to enable other distribution channels (and not just the beta-tester channel they finally opened up for app developers) so that anyone who has a native app built with the SDK can provide me, the user, the choice to decide what may “lead to user confusion” or what might be better functionality!

Wake up Apple…seriously.

| Comments

NDA.  Non-disclosure.  Hush documents.

Not many people like them.  In the technology world they are a necessary evil.  Personally I don’t think that way.  I think NDA’s are generally a good thing.  It’s enabling legalese to let two parties participate in information exchange when they don’t want the rest of the world to know about them.  NDA is a general term, of course, and the wording in any non-disclosure agreement is subject to the two parties involved.  Heck it could say “We’re going to show you everything and you agree only to not talk about feature X…everything else is fair game.”  Usually they don’t.

Enter the iPhone SDK.  The frustrating part for iPhone developers wanting to share their knowledge, innovate on the platform, etc.  It was assumed from a lot of developers that upon the release of iPhone 2.0 software that the NDA would be lifted.  Guess what – it isn’t (as of this writing).  What does that mean?  Well, among other things, people who have the SDK are under that NDA and shouldn’t be discussing it with anyone other than Apple.  Guess what…even if your best friend is under the same NDA, technically your agreement is only with Apple, not ‘anyone else under NDA.’

My local Cocoa/iPhone user group in my area recently shut off their email list and posted this message:

“IMPORTANT NOTE: AT THE PRESENT, IN ORDER TO RESPECT THE IPHONE DEVELOPER TERMS AND CONDITIONS, WE HAVE DEFERRED MESSAGE POSTING AND OUR FIRST MEETING UNTIL OPEN DISCUSSION ON IPHONE DEVELOPMENT IS ALLOWED BY THE NDA, AND BLESSED BY APPLE. OUR GOAL IS TO PROMOTE APPLE IPHONE TECHNOLOGY ACCORDING TO PROPER GUIDELINES AND NOT PRESENT EVEN AN APPEARANCE OF IMPROPRIETY. ALL GROUP MEMBERS WILL BE NOTIFIED AS SOON AS WE ARE FREE TO OPENLY COLLABORATE.” source: Phoenix iPhone Developer Group

As frustrating as it is for passionate folks, bravo to this group to at least ensuring their channel they’ve created isn’t a faucet of information that shouldn’t be shared just yet.  There are other groups that I’ve seen hosting iPhone developer discussions and I can’t imagine how they are doing that without talking about thing that violate the agreement they have in place. 

NOTE: If you downloaded the SDK, you agreed to the NDA – sorry if you didn’t read it, but you did.

An NDA is in place to provide valuable information to those who want to agree to it.  By not honoring that you’re stealing information essentially.  Beyond the legal stuff which I don’t pretend to understand in a deep manner, it just isn’t really ethical for you as an individual, business, developer, community, whatever.  I don’t care if it is with a darling company like Apple…no matter what if you agree you should be responsible. 

Another part of the SDK is the terms.  Besides not being able to be discussed, shown, shared, the terms of the iPhone SDK might prohibit any open source project.  Which brings into question the project from Wordpress.  This is an AppStore approved app that now has source available. (which is using the GPL license).  As Nathan Willis of Linux.com points out that two terms of the SDK and AppStore deployment violate explicitly the GPL (nondisclosure and code signing).  Wordpress putting the source out there violates not only the terms of the iPhone SDK but as well isn’t in line with the GPL they have selected.  How is nobody claiming shame on them?  Just because they are open source doesn’t mean they have the right to violate agreements.

Yes, I know Microsoft isn’t open source all the way by ANY means.  I don’t believe I’ve ever made that comment and certainly not here…this isn’t about a ‘well then you should to’ but rather about honoring known agreements and terms/conditions of use.

If people get lost in a frenzy of excitement and decide just to start violating things they agree to, where does that leave organizations wanting to plan and share information?  There isn’t a lot of trust left is there?  I honestly think that Apple will rectify this soon and perhaps it is just an oversight while they are dealing with the MobileMe troubles as of late, but regardless the terms are still there, the confidentiality agreements are still in place and if you agreed to them, you should honor them.  I know that is a bit of a “duh” moment…but seeing stuff like what Wordpress is doing and user groups sprouting information makes me sad that we as professionals have disregard for these types of things.

I had an idea for an iPhone app that I wanted to do to manage the life-sucking-battery-settings and others even wrote they’d pay money for that app.  When I had the idea I immediately contacted an Apple evangelist and began starting a discussion about this.  Turns out that the settings I’d need to get to aren’t available according to this evangelist in email.  I noticed the iPhone dev team has the headers needed, but even completing the app wouldn’t give me any distribution beyond myself because the mere coding against the properties would violate the terms and wouldn’t be approved in AppStore.  I suspect an app like this will surface (perhaps in the Jailbreak world) and if it does on AppStore, I’ll be pissed that I was misinformed and missed out on an opportunity!  Where was I?  Oh yeah, anyway I went to the source (Apple), inquired, and was told it wasn’t possible per the terms.  It sucks, but I’m going to honor those terms…because I agreed to.

And if you did, so should you.  Wordpress…shame on you.

Related articles:

| Comments

iPhone not backward compatI’m a little pissed right now.  Today I had a long drive downtown and on the way home I was planning on charging my iPhone (since battery life sucks bad) as well as listen to some of the tunes.  I upgraded my car system last year to support iPod connectors and put a dock in my car attached to my OEM stereo.  It was a project I was pretty proud I was able to do myself :-).  You can read and see about it here and here.  At the time I did this I was asked why I didn’t use a Zune…after all I do work for Microsoft.  Well I have a Zune and actually think it is a great device.  The current one brings pretty much parity with iPod from a device standpoint and has some additional features that are interesting to some.  The problem was that Zune didn’t have a great aftermarket accessory story…especially for OEM car integration. 

I researched for my specific vehicle and came across a great solution which I purchased and implemented.  One of the great stories I heard was about how many accessories were available and how they all used the same connector, etc.  This is true and a great story for iPod.  Pretty much every accessory works with every iPod/Phone connectors.  This was true for my car kit that worked with iPod and iPhone v1 (charged and played).  Today I was greeted with the message at the top of this post.  Argh.  I chose either option and the integration didn’t work nor would it act as a charger.  What?!  A bit of researching shows that others are having similar problems.  It seems that there was some significant enough changes to the 3G hardware unit that will render certain accessories useless (namely charging and interactive ones…but what other kinds are there).  I’ve been reading that Firewire support is gone in iPhone 3G and because of that there is some voltage charging requirements (must be 5V) that make some chargers useless…especially the well integrated ones. 

One of the top manufacturers of iPod/phone integration kits, BlitzSafe, is pretty affected by this and I’ve been seeing complaints sent to them.  If there was a hardware change, this could be upsetting to most that spent money on a tight integration kit.  I guess the “same connector” really isn’t and that’s a little misleading.  I’m thinking that the advertisements should really expand that asterisk on their image.

I’ve contacted my manufacturer of the device to see if they are aware of this and maybe they can provide some type of firmware update themselves (for my dock) but I’m guessing it isn’t possible…I’m going to wait to see what they say as options…if anyone know how BlitzSafe is affected and their response, I’d be interested in knowing as well.  Aside from the voltage charge feature it seems that the v1 software commands aren’t honored as well.  Hey Mr. Jobs, can you release a software update that ensures that old docks with interactive commands are mapped to any new v2.0 software commands so that you have backward compat with device accessories?  If not, I really think you should add some truth in advertising and a warning on the features (and if there is one, can someone point it out to me as a part of the official documentation?).

iPhone 3G Max Battery.appAs another aside, in dealing with the battery life for a typical business day (it was dead at 5pm), I’ve decided that I need to manage my own battery life now (oddly enough is there a battery meter that actually shows the % left rather than just the icon on the device?).  This led me to flipping different options all day.  What is funny is that Apple’s own documention on improving battery life pretty much instructs you to turn off all features that make the 3G, well, the iPhone 3G: turn off 3G, minimize use of location services, turn off push mail, minimize use of 3rd party applications.  This cracked me up.  Given that I busted out the iPhone SDK and desired to write an application.  I consider myself not a genius but not an idiot.  I honestly couldn’t figure out how to add an event handler to a button click.  Some of you may laugh…go ahead.  I didn’t find any real helpful tutorials to guide me either.  If there are some, please point me.  At any rate, if there is someone who’d like to collaborate on creating “Max Battery.app” with me, leave a comment and let’s setup a project.  Of course the downside is to actually even test this we’ll have to pay $100 and won’t even be able to give it to others to test (see developer comments in previous post).  My goal would be to write a utility app that would be one place where you could do what Apple suggests.  Currently these settings are in 4 different places.  I’d love a single button to that is labeled either “Make iPhone v1” or “Extreme Savings” or something like that which would automatically toggle all these settings off instead of individually.

Anyhow, first 24 hours.  Disappointing in the key areas that were of interest to me.


This work is licensed under a Creative Commons Attribution By license.

| Comments

Well now that the iPhone 3G (and actually more specifically the 2.0 software) are out, I promised myself I’d take another look, especially given that the claims of “for the Enterprise” were there (which really meant ‘we added ActiveSync’).  I had been holding on to some gift cards to subsidize this gadget investigation and so alas, I am testing the iPhone 3G for my use.

Now because the device itself isn’t really much different (physically the changes are subtle) I’m not really commenting on the “iPhone” itself but rather on the claims of what 2.0 software brought to the device.  The 3G and GPS are additive value, and I’ll comment on them a little bit.  The physical device is still great looking, feels good in your hand and has a bright display…but still has some shortcomings I think as well.

For me the claim of “ready for the Enterprise” should mean a lot more than ‘we've technically implemented the spec for ActiveSync.’  Given Apple’s track record with user experience design, I was surprised to see some really lacking implementations coming from an environment where I live in Exchange ActiveSync (EAS) and have experienced that integration since it was available on the Windows Mobile platform…which in this instance is the bar.  No, I’m not saying Windows Mobile is the bar…I’m saying the EAS integration is the bar.  How it operates, how the user interacts with it as a part of their usual desktop experience as well.  So here goes my feedback.  Remember, this is feedback regarding the ‘ready for the Enterprise’ claims.

I’ve already admitted in the past I hate the term ‘Enterprise’ but Apple seems to be defining it here as anyone who wants to use Exchange.  I think that is a wrong definition by a long shot.  Lots of people use Exchange – it’s why they added support for it!  That being said, my brain definition of ‘Enterprise’ is a large corporation.  I’m using my current usage of my digital lifestyle (personal and work) in that definition.

My feedback based on my experience (note: firmware version 2.0 5A347).

Multiple Calendar/EAS profiles

I’ve seen this complaint several times in the blogging circles.  People want to be able to sync multiple Exchange accounts or combine with EAS and MobileMe, etc.  I must admit that it doesn’t appeal to me.  I have one address book.  While I can see people wanting to do that, I can see how it wouldn’t be ideally supported.  The device seems to have single contact stores (calendar, contacts, etc.) – so adding two accounts would seemingly blend these together.  Admittedly I haven’t looked into this because it is a feature that I don’t care about…so if I’m wrong and it does support it, forgive me.

Large Contact Store

I have currently 1,172 contacts in my address book.  Notice I did not say friends.  These don’t represent every Twitter follower, Facebook friend, etc.  These are valid contacts that I want to retain in my personal and business life.  Networking is key in my industry and I make sure that I maintain relationships over time.  People may say there is no way you can manage that many contacts and would be true…I don’t ping these people daily, but keep contact information for people I’ve met of value over time – it has paid off tremendously to do this.  But enough about that…

iPhone sucks at handing large contact stores.  I suspect that a hard-core sales person ‘in the Enterprise’ has many more contacts than I do.  When I switch to the contacts application (or when using Contacts in To/From type fields) the software is painfully slow.  In the contact screen, it comes up and then when I click the search field there is a noticeable delay before that is enabled.  Then as I type it starts to filter….slowly.  This has to improve in my opinion.  For me the #2 functionality of my device (phone function being 1) is contacts.  This feels almost unusable to me.

The Exchange directory feature is also hidden.  In Windows Mobile when you search and nothing is found, you get an immediate option to check the ‘company directory’ which is the Exchange global address list.  iPhone buries that in 3 more gestures away…it is not an integrated experience within the default contacts and is behind the Group icon on the device…then you pick the Directories section.

This area needs improvement.  Windows Mobile has a superior experience here in both performance of large contact stores and GAL integration.

Meeting Invitations/Appointments

This one is an odd one as I’ve experienced two different things and it hasn’t been consistent in my testing (even though the meeting requests are coming from the same place).  With that said, this was one area that I felt took a lot to get used to as it does not exhibit the same behavior as Windows Mobile.  In WinMo, when you receive a meeting request it is the same as in the Outlook desktop experience.  You get it in your inbox, open it up, accept/maybe/decline with an option immediately for inline comments as well.  iPhone does it a little different.  First, you get a popup notice (this can be turned off) for your ‘Invitation’ (that is what iPhone calls them):

If you click view, it takes you to the Calendar application under the Invitations section:

And once you click on the new invite (as denoted with a blue dot), you see the meeting request with the option of accepting/etc.

The problem is where is the option to provide feedback/comments on why I might decline?  The screenshot above implies that it isn’t there and gives you no indication that you can scroll down…but when you do:

Not very intuitive and not the same experience of a typical Exchange user who is used to taking action and adding comments at the time. 

The other thing that was odd for me was that if you ignored or didn’t see the popup, you’d have a much different experience in getting your appointment.  Take a look at the screenshots below.

  

On the home screen when you receive an invite you get a new notice on the calendar icon.  Hmm…that doesn’t imply ‘new meeting request’ to me as an Exchange user…it implied I have one item today.  When you click on the calendar application you go to your calendar view and if you look at the second screenshot you’ll see the lower right corner what appears to be an inbox?  Clicking on that takes you to the Invitations screen (pictured previously).  So to me, it was an odd workflow, especially given that I didn’t have an email in my inbox with the meeting request!  I thought that was odd.  My future testing, however, showed the emails starting to show up (third screenshot above).  It is pretty much what you’d expect and when clicking on the appointment link takes you to the Invitations screen (again, pictured previously above).

UPDATE: New Meeting Requests

What?!  When I create a new calendar item I cannot invite people?  Shame.  Shame.

So for me, the process coming from a world of EAS and the Outlook desktop experience was different.  I can’t say this is bad yet, but if I miss a meeting request because it isn’t in my inbox, I’ll be pissed.  No vote on this one yet…the experience is ‘different’ for now.

No EAS Feedback

WinMo has an explicit icon to go to ActiveSync.  Here you can see your settings, but more importantly view any issues that may have occurred with the last sync.  This could include conflicts, EAS status messages, connectivity issues, etc.  I see none of that in iPhone.  It gives me no feedback of if everything is operating okay or not.  Am I just to assume it is?  Here’s the config screen I expected to see it in:

Location Services

Seems to be the most popular thing to build iPhone applications off of!  As a side note I think the UrbanSpoon application is the best.  It is a great innovation to the age old question “what are we doing for dinner?”  That said, every app seems to want to take advantage of GPS.  Here’s the problem – GPS is a battery suck.  So for me I turned it off immediately which you can do easily.  When I then go to Maps (which uses Google maps), I am presented with this when I choose the Locate Me feature (lower left corner icon button):

If I choose Don’t Allow the feature goes away.  What?!  What happened to even my fake GPS with Google maps?  It doesn’t seem like it is an option anymore…it’s either real or none.  Clicking ok on here turns on your GPS radio as well, so start the battery suck.  This is odd to me and I think a loss for Google maps.  Sure real GPS is great, but I would expect that it fallback on the tower triangulation that was an acceptable option for most…espeically those in dense areas where GPS line-of-sight might be troubled, but signal triangulation might be easier to attain.

On a side note, developers should do exactly what UrbanSpoon does – gives me the option to use my current location and if I choose Don’t Allow then it falls back to still let me manually select and still use the application…well done.

Battery Life

Wow, noticeable battery life drain on this device compared to the previous incarnation.  I mean, really bad.  I’ve got GPS/WiFi turned off and have tuned my mail settings accordingly.  My battery was dead after first day.  Yikes.  This is failure ‘for the Enterprise’ given how mobile employees are.  I’m making sure my car adapter works and never leaving home without the wall cable.  I really hope this improves for their sake.  My WinMo device is a BlackJack II (which also has GPS turned off) and I get at least 2 days on a full charge with 3G activity and push email.  I know people complain about the BJII as well, but in comparison I think WinMo devices have fine tuned for the most part the battery usage that EAS and always-on push email uses. 

I don’t think the configuration options for the email/push are incredibly intuitive.  In fact when i configured my IMAP account, it automatically set it for Fetch rather than manual (this seemed to be a change from the previous software in my experience).  I noticed there was an Advanced button that would allow me to change the per-email account settings:

This enabled me to say Manual for this account and Push for the other.  This option is under the “Fetch” section of the Settings applet.  I recommend fine tuning these to your needs, maybe even turning off push all together for optimal battery life if you get a lot of mail.

16GB and no document storage

Seriously.  16GB and still no option to save documents?  Now I am not a heavy document user on my WinMo device either but I do like the ability to save documents to the device (whatever ‘documents’ means to you) when I need to.  I know iPhone can be used for USB storage, but my WinMo device can respond to the inquiry of ‘Hey, can you email me that spec?’ To which i can Save As…to my SD card and transfer later if needed…or transfer via ActiveSync via Bluetooth…neither of which iPhone can do.  WinMo clearly wins here for this feature that I think people use a bit in the Enterprise.

Home Screen Customization

Where is the home screen customization?  One great thing about all ‘for the Enterprise’ devices (WinMo and Blackberry) is they provide Today style home screens.  Date/Time, # emails, # appointments, next appointment, etc.  The iPhone home screen gives me # of emails (but doesn’t tell me which accounts those numbers exist in…WinMo does) but tells me nothing about my day until I click a few times.  This should be a customizable feature that iPhone should enable.  Even in the locked screen state I’d love to see my message counts and next appointment.  This is a common use for me in my business life.  I’m not even sure their SDK would allow such overriding of the icon display home page UI?

Pin Unlock

Most larger corporations would implement the EAS feature of policies and require a device pin lock.  This is fine.  What sucks is that when pin lock is enabled, you essentially have to double-unlock.  Slide to unlock, then enter pin.  Sigh…that sucks.  I’m not sure that can be improved as the pin lock feature is tied to a timeout and I do like my device preventing me from using features when in my pocket.  Maybe if you have a pin, then the Auto lock settings are used.  Either way I think it should be one or the other…not both.

The Developer Story

Much has been said about AppStore and how wonderful it is.  I agree, the iTunes experience is pretty seemless.  Having one place to acquire apps is nice.  I think this is one area where WinMo really hasn’t nailed although there are exponentially larger amount of applications for WinMo available, it is not an integrated experience to get them.  Handango comes close, but I believe this is one area where the carrier customization of the devices bites WinMo in the end in my opinion…nobody chooses to include Handango in their distribution.

Aside from distribution, the developer story sucks a little for me.  Sure the tools are free…for emulation only.  Want to deploy to your iPhone?  $100.  Now, I don’t think that’s such a bad price actually.  My problem is that it limits you to a device.  It is hard to tell from the terms (I haven’t signed up fully) whether you can deploy an app to multiple devices (it notes Registered Device IDs).  If not, this is epic fail for me.  How do you get your app out there for people to beta test and give you feedback?  Will AppStore allow beta versions since that is the only mainstream distribution channel?  This seems like a developer shortcoming to me.  I love the WinMo experience of being able to write something, debug in emulation, change and deploy to my device, or write an installer that I can email to my friends who can receive it over the air, save to their device and install.  I’d really like to know the equivalent process here for iPhone development.

Ready?

In the end, I’m not convinced all the kinks are worked out for really declaring the badge ‘ready for the Enterprise’ valid.  Simply adding one feature to your software hasn’t made it that ready.  I guess ‘the Enterprise’ will eventually tell Apple what needs to be done.  For me, as an enterprise user, as an EAS user…it isn’t complete.  It needs some fine tuning in certain areas for sure.

UPDATE: See Exchange features broken/missing/weird, help us build the wiki: iPhone Exchange Issues

How did you take those screenshots?

I have a friend that runs a blog called On a Mac that you should subscribe to if you are a mac user.  He clued me in to how to take screenshots on iPhone using a new feature in the 2.0 software.

Related Posts:

    • "If you're a business user, then we feel the answer is no, it's not worth it." Speaking on a business user purchasing an iPhone 3G Source: ars technica