Category Archives: software development

Enterprise app development on Apple iPhone and iPad

Apple’s iPhone is still perceived as primarily marketed to individuals rather than corporates. However, I was interested to see how much Apple is doing to attract corporate developers. First, Apple now supports some basic enterprise-friendly features, such as Microsoft Exchange (with a few caveats), VPN, remote wipe, and the ability to lock down iTunes to some extent. Without these capabilities, the devices would not be acceptable in many environments, making it pointless to consider them for custom applications.

Unfortunately iTunes is still needed for activation, deploying software updates, and installing applications. It is silly that Apple requires business users to install a music library to use its phone, I guess reflecting the device’s history as a music player. It is also a somewhat intrusive application especially on Windows.

If you then want to develop internal applications, you sign up for the iPhone Developer Enterprise Program. At $299 per year this is more expensive than the more general equivalent, but no big deal. Then you have to get a digital certificate from Apple. Next, create one or more “provisioning profiles” that install onto the device and authorize it to run your applications. Applications you create must be signed with your digital certificate. Finally, you can add the signed applications to an iTunes library, and users can then drag them to their iPhone or iPad. It will only run on devices that have the matching provisioning profile installed. Organisations can also revoke applications by revoking the identity used to sign the provisioning profile.

As Adobe pointed out to me, since these apps do not go through Apple’s approval process, there is nothing to stop corporate developers using the Flash Packager for iPhone that is available in Creative Suite 5.

There is more detail on Apple’s iPhone in Business page.

HP will not do Android or Windows Phone 7 smartphones – but what chance for webOS?

HP’s Todd Bradley, Executive Vice President of Personal Systems and formerly CEO of Palm, was interviewed by Jon Fortt at CNBC. Fortt asks some great questions which mostly get woolly answers, but did get this statement from Bradley:

We will not do a Linux, Android phone. We won’t do a Microsoft Phone … we’ll deliver webOS phones.

I will be interested to see if HP sticks to this commitment. HP is Microsoft’s biggest customer and huge in business systems, but that does not necessarily mean it can make a success of a mobile platform on its own.

Mobile platforms stand (or fall) on several pillars: hardware, software, mobile operator partners, and apps. Apple is powering ahead with all of these. Google Android is as well, and has become the obvious choice for vendors (other than HP) who want to ride the wave of a successful platform. Windows Phone 7 faces obvious challenges, but at least in theory Microsoft can make it work though integration with Windows and by offering developers a familiar set of tools, as I’ve noted here.

RIM Blackberry is well entrenched in the Enterprise and succeeds by focusing on messaging and doing it well. Nokia and Intel will jostle for position with MeeGo.

It is obvious that not all these platforms can succeed. If we accept that Apple and Android will occupy the top two rungs of the ladder when it comes to attracting app developers, that means HP webOS cannot do better than third; and I’d speculate that it will be some way lower down than that.

You have to feel for HP, which has supported Microsoft’s failing mobile platform for many years – with the occasional lapse, remember when it became an OEM vendor for Apple’s iPods? – and now has decided it cannot rely on the company in this area. That is understandable. However, HP is heavily invested in Windows. It may be choosing just the wrong moment to abandon ship; or it may find that doing its own thing with webOS is no better. Google Android would have been a safer though less interesting choice.

Google App Inventor – another go at visual programming

Google has put App Inventor for Android on Google Labs:

To use App Inventor, you do not need to be a developer. App Inventor requires NO programming knowledge. This is because instead of writing code, you visually design the way the app looks and use blocks to specify the app’s behavior.

Sharon Machlis at Computerworld says it is a breakthrough:

App Inventor has the potential to do for mobile app creation what VisiCalc did for computations — move it out of the exclusive realm of specialists in glassed-in data centers (or, in the case of mobile apps, programmers who can use a conventional SDK) into the hands of power users as well as make it easier for IT departments to create corporate apps.

I’d like to believe this but I do not. It is visual programming; it is interesting; but it is similar to other visual programming tools that we’ve seen in the past. These tools have their place for learning, and there is probably some small sub-section of programming tasks for which they are ideally suited, and some small sub-section of developers for whom they work better than text-based tools, but for most of us textual code is easier and more productive when we are coding the logic rather than the user interface of an application.

I took a look at the Quiz Me tutorial. Here’s a code snippet – it is a click event handler:

image

and here is the complete application. Note the navigator at top right, which would be vital for finding your way around a more complex app:

image

It is often a problem with visual programming tools: scaling an app beyond a few simple blocks introduces difficulties with navigation and project management. Our text-based tools are highly evolved for managing large projects with thousands of lines of code.

What about democratisation of programming through visual tools like this, coding without coding, that will allow domain specialists to develop apps without involving developers? Is visual programming really easier for the non-specialist than textual programming? I’m not convinced. It should be easier to get started: no syntax errors, no language reference to consult. In the end though, is a purple “if” block with jigsaw connections for “test” and “then-do” much easier than typing if (test) {code block}?

It is just a different way of presenting the same thing, but less concise and less flexible. I suspect the domain specialist who can succeed with App Inventor will also succeed with code; and that people who struggle with code-based programming in an accessible language like Basic will also struggle with visual programming.

Where this gets interesting is when you have powerful components that expose a simple interface. A high-level non-specialist programmer can drag a component onto a design palette and do amazing things, because of the smarts that are hidden inside. Components do democratise development. One reason for the success of Microsoft’s development platform is that from Visual Basic through COM and then .NET, the company has always made it easy to use components and fostered a strong third-party market for them. If App Inventor provides a great way to deliver components to high-level developers, it could succeed.

That said, components do not require visual programming. Microsoft has flirted with visual programming – like the abandoned PopFly – but despite using the name “visual” everywhere, Microsoft has never delivered a mainstream visual programming tool.

Don Syme on F#

I’ve posted a lengthy interview with Don Syme, designer of Microsoft’s functional programming language F#. It covers:

  • The genesis of F#
  • Why it is in Visual Studio 2010
  • How it differs from other ML languages
  • Who should use it
  • What it brings to parallel and asynchronous programming
  • Unit testing F#
  • Future plans for F#
  • Book recommendations

One of the questions is: if I’m a C# or C++ developer, what practical, business-benefit reason is there to look at F#? Worth a read if you’ve wondered about that.

Ten years of Microsoft .NET – but what about the next ten?

Technology products have many birthdays – do you count from first announcement, or release to manufacturing, or general availability? Still, this week is a significant one for Microsoft .NET and the C# language, which was first unveiled to the world in detail at Tech-Ed Europe on July 7th, 2000. The timing was odd; July 7th was the last day of Tech-Ed, whereas news at such events is normally reserved to the first day or two – but the reason was to preview the announcement at the Professional Developers Conference in Orlando the following week. It was one of the few occasions when Europe got the exclusive, though as I recall most of the journalists had already gone home.

It is interesting to look back, and I wrote a piece for The Register on .NET hits and misses. However you spin it, it’s fair to say that the .NET platform has proved to be one of Microsoft’s better initiatives, and has delivered on at least some of its goals.

It is even more interesting to look forward. Will we still be using .NET in 2020?

There is no sign of Microsoft announcing a replacement for .NET; and little sign of .NET catching on in a big way outside the Microsoft platform, so in part the question is about how the company will fare over the coming decade. Still, it is worth noting that the role of the .NET framework  in that platform still seems to be increasing.

Most predictions are wrong; but the general trend right now is towards the cloud+device computing model. The proposition is that both applications and data belong in the cloud, whether public, private or hybrid. Further, it seems plausible that we will fall out of love with personal computers, with all their complexity and vulnerability to malware, and embrace devices that just work, where the operating system is locked down, data is just a synchronised local cache, and applications are lightweight clients for internet services. Smartphones are already like this, but by the end of this year when Apple’s iPad has been joined by other slates and small computers running Google Android, Google ChromeOS, Intel/Nokia MeeGo and HP WebOS, it may be obvious that traditional laptop and desktop computers will decline.

It turns out that the .NET Framework is well suited to this model, so much so that Microsoft has made it the development platform for Windows Phone 7. Why stop at Windows Phone 7 – what about larger devices that run only .NET applications, sandboxed from the underlying operating system and updated automatically over the Internet? Microsoft cannot do that for Windows as we know it, because we demand compatibility with existing applications, but it could extend the Windows Phone 7 OS and application model to a wider range of devices that take over some of the tasks for which we currently use a laptop.

In theory then, with Azure in the cloud and Silverlight on devices, the next ten years could be good ones for the .NET Framework.

That said, it is also easy to build the case against. Microsoft has it all to do with Windows Phone 7; the market is happily focused on Apple and Google Android devices at the high end. Microsoft’s hardware partners are showing signs of disloyalty, after years of disappointment with Windows Mobile, and HP has acquired Palm. If Windows Phone 7 fails to capture much of the market, as it may well do, then mobile .NET will likely fail with it. Put this together with a decline in traditional Windows machines, and the attraction of .NET as a cloud-to-client framework will diminish.

Although developer platform VP Scott Guthrie, C# architect Anders Hejlsberg and others are doing an excellent job of evolving the .NET framework, it is the success or failure of the wider Microsoft platform that will determine its future.

PivotViewer comes to SilverLight – data as visual collections

Microsoft has released a PivotViewer control for Silverlight. Data visualisation is a key business reason to use Silverlight or Flash rather than HTML and JavaScript for an application, so it is a significant release. But what does it do?

PivotViewer is the latest tool to come out of the Microsoft Live Labs Pivot project. Pivot is based on collections, which are sets of data where each item has an associated image. A pivot item has attributes, similar to properties, called facets; and facets have facet categories. Facet categories are used to filter and sort the data.

More complex Pivot data sets have several linked collections, or dynamic collections which are generated at runtime as a query result. This is necessary if the size of the data set is very large or even unbounded. You could create a web search, for example, that returned a pivot collection.

Once you have created and hosted your Pivot collections, most of the work of displaying them is done by the Pivot client. There is a desktop Pivot client, which is Windows-only; but the Silverlight PivotViewer is more useful since it allows a Pivot collection to be viewed in a web page. The client (or control) does most of the work of displaying, filtering and sorting your data, including a user-friendly filter panel.

PivotViewer also makes use of Deep Zoom, also known as Seadragon, which lets you view vast images over the internet while downloading only what is needed for the small section or thumbnail preview you are viewing.

The result is that a developer like Azure Technical Strategist Steve Marx was able to create a PivotViewer for Netflix with only about around 500 lines of code. This kind of product selection is a natural fit for Pivot.

I was quickly able to find the highest-rated music movies in the Netflix Instant Watch collection.

image

Starting with the full set, I checked Music and Musicals and then set Rating to 4 or over.

 

image

It seems to me that the strength of Pivot is not so much that it offers previously unavailable ways to visualise data, but more that it transforms a complex programming task into something that any developer can accomplish. Microsoft at its best; though of course it will only work on platforms where Silverlight runs.

Why we love to hate Microsoft

Mary Branscombe has an excellent ZDNet post on Why do we (love to) hate Microsoft, and asks:

What would Microsoft need to do and say to you for you to be happy to call yourself a fan?

In part she’s reacting to Frank Shaw’s Microsoft by the Numbers in which he highlights the success of Windows 7, and makes the point that Windows netbooks will likely outsell Apple iPads by 7 or 8 times in 2010, that Linux has not ousted Windows either on the desktop or the server, and that Nokia smartphones will likely outsell iPhones by 2.5 times in 2010.

That last one is interesting. Why is Shaw puffing Nokia, when he is VP corporate communications for Microsoft? Well, the enemy of my enemy applies; it’s a jibe at Apple.

Unfortunately for Shaw, Nokia itself admits that Apple iPhone and Google Android are hurting its market share, or at least that is how I interpret this remark:

Nokia now expects its mobile device value market share to be slightly lower in 2010, compared to 2009. This update is primarily due to the competitive situation at the high-end of the market and shifts in product mix.

Nokia is being driven down-market. The same thing has happened to Microsoft in the laptop market, with the high-end going to Apple. This is a worry for both companies, since if a company becomes known as “the best” in a particular sector, it may well extend its market share simply by lowering prices or introducing cheaper product variants. This happened to some extent in the portable music player market – only to some extent, because Apple is still more expensive than most of its competitors, but its market share is now huge.

I digress. Here are a few observations on the ZDNet post. First, has Microsoft really changed as stated?

Microsoft is still paying for the bad old days of arrogance and dubious business practices. I think they’re the bad old days – I spend a lot of time talking to Microsoft insiders, partners and competitors and the attitudes I see have changed, inside and out.

The trouble is, Microsoft is so large and complex that it is hard to generalise. I think of it more as a set of united (or disunited) states than as a single corporate entity. This has always been the case – at least, as long as I can remember, and I don’t go back to the very early days.

I can believe that regulation has mitigated the worst practices of the past. But why on earth is Microsoft suing Salesforce.com (and getting itself counter-sued)? It’s terrible PR; it looks as if Microsoft wants to compete in the courts and not on product quality. If it wins and hurts Salesforce.com, what is the benefit to the industry? I realise Microsoft is not a charity, but we are talking business ethics here.

More broadly, there are two separate topics that need to be addressed. One is about the quality and prospects for Microsoft’s products and services, and the other is about how it is perceived and why.

I’ll take these in reverse order. Microsoft has history, as Mary Branscombe says, and more history than just Clippy. It’s the perceptions of the web community that are most visible to many of us, and the piece of history that counts for most is over the web browser. Microsoft beat off the competition, then froze development, an evil act that is particularly hard to forgive because of its cost in terms of devising workarounds for web pages. Yes, that’s changed now, and we have had IE7, IE8, and the promising IE9; but has Microsoft convinced the community that it would not do the same again if it had the opportunity?

There are other things I can think of. The whole Office Open XML (OOXML) saga, and hints that Microsoft is not following through on its promises. The BlueJ incident.

There is also the question of pricing, especially for business users. When I reviewed a Toshiba Netbook recently I figured that installing Windows Pro (to join a domain) and Office would cost more than the hardware. I suppose you cannot blame a company for charging what the market will bear; but when the commodity software costs more than the commodity hardware, you have to wonder whether monopolistic pricing is still present.

OK, what about product quality? I tend to agree that Microsoft often does better than it is given credit for. Windows 7 is good; Visual Studio 2010 is great; Silverlight 4 was a bit rushed but still impressive, to mention three offerings about which I know a good deal.

Nevertheless, Microsoft still had deep-rooted problems that I’ve not yet seen addressed. I’ll mention a couple.

First Microsoft still has an OEM problem. Going back to that Toshiba Netbook: it was nearly wrecked by poor OEM software additions and the user experience of a new Windows machine often remains poor. Many users do minimal customisation and as a result get a worse experience of Windows than they should. Apple will carry on winning if this is not addressed.

Second, Microsoft is conflicted, caught between the need to preserve its profits from Windows and Office, and the need to keep up with the new Cloud + Device model of computing. It is drifting towards the cloud; and developments like Office Web Apps and other one about which I am not allowed to tell you yet are encouraging (wait until next month). This issue will not go away though.

Third, mainly as a result of the above, Microsoft still does not convince when it comes to cross-platform. Silverlight is cross-platform, sure; except on the Mac you don’t have the COM integration or any equivalent, sorry, and on Linux, well there’s Moonlight or maybe we’ll work something out with Intel. It is the Windows company. Having said that, I put the Live Messenger app on the iPhone 4 I’ve been trying and it’s great; so yes, it sometimes gets it.

What can Microsoft do in order to be better liked? The key to it is this: ensure that our interactions with the company and its products are more often pleasurable than painful. Windows Phone 7 will be an interesting launch to watch, a product where Microsoft has made its best effort to break with past and deliver something users will love. We’ll see.

Two days with Apple iPhone 4

I’ve been trying out iPhone 4 since its launch on Thursday this week. My main interest is software development, and I have a couple of ideas for apps. Apple’s platform is annoying in several respects, especially the App Store lock-in and the Apple tax, but it is unavoidable. Unfortunately when a company gets the idea that it should support the fast-growing mobile device sector with an app, the iPhone is the one they think of first, and iPad follows. Google Android is coming up fast, thank goodness, but has nothing like the mindshare or market share of Apple’s device platform.

image

Software developers have another reason to study the iPhone, which is as a case study in software design and usability. After using iPhone 4 for a couple of days, and watching friends try it even if they have not used one before, I am full of admiration for what Apple has achieved. There are a few basic concepts to grasp – home button, breadcrumbs, swipe and multi-touch – after which it is mostly delightful. There is hardly any documentation in the box – though there is a downloadable manual – just a brief leaflet describing a few essentials, but discoverability is good, especially with a little help from Google.

Need a screen grab, for example? Press and hold home and tap the top button. The grab turns up in the camera roll. It’s not something you would find out by chance, but only a search away.

Text input is a big deal for me. I am much faster on a real keyboard, but the iPhone is as good as many thumb keyboards. Again, there are things you have to discover. There are no cursor keys, but if you hold down an area of text a bubble appears, and sliding your finger left and right moves the cursor so you can easily correct an error.

image

The Exchange support, by the way, is excellent. I put in the settings for Outlook over HTTP; the iPhone complained briefly about my self-generated digital certificate and then connected without any hassles. The device picks up all the folders in the inbox without any additional configuration. The one feature I would like to add is the ability to select a different sending email address; if anyone knows a way to do this, let me know.

I am also impressed by iPhone Safari. After struggling with an old Windows Mobile browser, it is a relief to have a proper web browser restricted only by its small screen; pinch and zoom copes with most problems though it is always going to be a limitation; sites optimised for mobile work better.

Google Maps is great too. The GPS works well, and finding your way around is a snap.

The high resolution screen is lovely of course, and the camera is superb. I will do some comparisons against my Canon Ixus, but if I keep the phone it might save me the need to carry a separate camera when out and about, at least until the lens gets scratched.

Anything not to like? A few things. The price, for one, especially when supplemented by whatever scheme your mobile operator devises to separate you from your money. Many schemes offer only 500MB per month data allowance; not enough, especially as data usage can only increase.

There’s also the iTunes problem. I know others like it, but I personally don’t get on well with iTunes, finding it bloated and annoying. I don’t allow it on a PC, but keep a Mac Mini handy for when I need to do the Apple thing. It is absurd though that you cannot use an iPhone without activating it first via iTunes. What happens when a user decides that iPad plus iPhone plus cloud is all they need? I can’t help wondering if Apple simply wants to ensure that as many people as possible install its online store.

Whenever I connect the iPhone, iPhoto pops up and wants to import photos, even the ones that I’ve already imported. I have to check the option not to bother with duplicates every time. There must be a way of avoiding this annoyance, but I’ve not spotted it yet.

Then there’s the reception issue. It’s well known that many, possibly all iPhone 4 models have a bug where if you hold it in the normal way, your hand bridges a gap in the external antennas and damages reception. Steve Jobs says that reception issues when holding a phone in a certain way is “a fact of life for every wireless phone”; this is arrogant spin and I hope Apple gets lots of returns or at least hands out for free the bumper cases that apparently resolve the issue.

That said, my iPhone is on O2 and at home the reception is terrible however I hold the phone, even though I am in a high coverage area according to O2. At my desk I get only one bar and calls are not always possible – which means I will have to cancel the contract.

image

I did manage to fit the micro sim into my old Windows Mobile phone to see if it is just an iPhone problem. It was just about as bad, so no, it is O2. In general I’ve not been impressed with the O2 reception in my part of the world, though it is excellent in our local O2 shop; perhaps they have a booster under the desk.

There are little niggles elsewhere too. I tried Voice Control, for example, and found it useless; perhaps I have the wrong kind of voice.

image

If I speak to play a song, there is 25% chance that it plays, 50% chance that I get a “no match” error message, and 25% chance that it dials a random person in my address book. A hidden social media function?

A number of negatives then; but the iPhone contrives to be good enough that users overlook any faults because they like it so much. It’s certainly a better experience than the last Android device I tried; though that is well out of date now, and I intend to look closely at Android 2.2 “Froyo” as soon as the phones become available.

Update: As far as I can tell, if you buy your iPhone at a store it will be activated for you, so you don’t need iTunes to get started. However iTunes is necessary if you receive your iPhone by post and activate it yourself.

Big browser and RIA news: Canvas comes to Internet Explorer 9

I’ve just installed the third Internet Explorer Platform Preview (on a virtual machine just in case) and run through a few of the demos. One of the most impressive is Canvas Pad, which demonstrates the HTML 5 Canvas element.

image

Canvas is particularly interesting, since it provides a surface to which you can draw anything you like. Canvas support was not announced at Mix earlier this year, when IE9 was unveiled, and some of us speculated that Microsoft would omit it in order to preserve the value of its Silverlight plugin – though in doing so it would also help Adobe Flash. Well, apparently the IE9 team decided to risk it. Not only is canvas supported; it is also hardware-accelerated:

Like all of the graphics in IE9, canvas is hardware accelerated through Windows and the GPU. Hardware accelerated canvas support in IE9 illustrates the power of native HTML5 in a browser.

Is there still value in Silverlight and Flash? There is, for several reasons. A plug-in presents a predictable runtime, insulating the application from browser variations. A plugin will work on browsers that do not yet support Canvas. Further, Silverlight includes the .NET Framework with its rich library, and supports the .NET languages, whereas for HTML5 you have to use JavaScript – though don’t forget Google Web Toolkit, which compiles Java to JavaScript, and other similar projects.

Even so, once you have hardware-accelerated Canvas there will be few occasions when you absolutely have to use Flash, Silverlight or Java.

Microsoft is doing the right thing. Crippling IE for the sake of Silverlight would only push users to other browsers, so it would not achieve its goal.

A full list of what is new in IE9 is here. It is shaping up to be the most interesting new IE since version 4.0 back in 1997.

Adobe financials: strong Creative Suite 5 and Flash, claims company undervalued

Adobe has released its financial results for its second quarter, reporting $227.3 million net income (GAAP) compared to $161.4 million in the same quarter last year; and revenue of $943 million which it says is 34% year on year growth.

Much of this is thanks to a successful launch for Creative Suite 5, which accounts for 56% of Adobe’s revenue. However, Adobe has also reported 12% year-on-year growth for LiveCycle, its enterprise server products about which I learned last week in Amsterdam. The “platform” segment, which includes the Flex development tools, Cold Fusion, and Flash media services, is also growing, from $36.8 million in Q2 2009 to $45.4 million in Q2 2010.

CEO Shantanu Narayen is upbeat, saying “we believe Adobe is significantly undervalued today” and backing his judgement with a share buyback program.

I was particularly interested in the focus on Flash in Adobe’s statements and conference call:

Approximately 3.5 million Flash designers and developers are working with Flash-based solutions today, and their ranks grew by 59 percent in 2009

said Narayen; while Executive VP Mark Garrett noted:

CS5 products containing Flash authoring and output as a product component achieved revenue growth of 22% version-over-version to date

making the point that this exceeded the growth of CS5 overall.

Any clouds on the horizon? Two that I can think of. One is that Apple wants to kill Flash. CEO Steve Jobs says:

Flash was created during the PC era – for PCs and mice. Flash is a successful business for Adobe, and we can understand why they want to push it beyond PCs. But the mobile era is about low power devices, touch interfaces and open web standards – all areas where Flash falls short.

The other issue is that Adobe is dependent on Creative Suite, desktop software that arguably will be a business hard to sustain in the cloud and device era.

Still, these are good figures, the best we have seen from Adobe for a while, and despite the efforts of Steve Jobs both Adobe and Flash are prospering right now. A side-effect of Apple’s Flash downer is that competitors have hastened to support it, with Google building Flash support deeply into its Chrome browser.

Detailed figures from Adobe are here.