Category Archives: development

Microsoft’s MSDN changes: too much marketing

Microsoft has updated its developer site, MSDN (Microsoft Developer Network). Simple, relevant and community driven, says Product Manager Brian Harry in a post introducing the new site.

image

Developers are not convinced that it is an improvement. The comments to Harry’s post are pretty damning, in fact. The core complaint is that the new MSDN home page is not a developer site, but a marketing site. Click on those “Use your skills” buttons and you get not technical references, but marketing pitches. They are misleading too. Click on “I build web apps” and you get a pitch for Windows Store apps build with HTML and JavaScript – and no mention of ASP.NET or Windows Azure.

image

What do developers want? Here’s a good suggestion:

Why don’t you have your team work on changes to MSDN that people would actually want? Like editable blog comments with formatting and code snippet options? Or Connect/UserVoice sites that aren’t horrific and disjointed? Or adding the TypeScript blog to the Dev Tools blog feed (something I’ve mentioned a half dozen times already to various people at MS, you’d think this 5 second update might make it into someone’s queue after TypeScript being out for almost a year now)?

I just cannot fathom how you guys are so adamant that listening to developers is important to you when 99% of feedback is ignored in lieu of changes that no one asked for and no one wants.

Most people come to MSDN in search of technical information. I suspect the strong marketing pitch for Windows Store apps will be counter-productive.

On the other hand, present developers with a fast, coherent, logically organised technical resource so that you can easily find both the API reference for the platform you are targeting, and comments and help with using it, and this will attract them and make them want to use the platform more often.

Appcelerator plans to rethink Titanium architecture, standardise on WebKit JavaScript engine

Appcelerator CEO Jeff Haynie has posted about his plans for Titanium, the company’s cross-platform mobile development toolkit.

The plan is to completely rewrite the core engine, while maintaining a mostly-compatible API. Central to the plans is the idea of using one JavaScript engine on all platforms:

With Ti.Next, we’ve created a small microkernel design that will allow us to have minimal bootstrap code in the native language (C, Java, C#, etc) that talks to a common set of compilers, tools and a single JavaScript Virtual Machine. We have found a way to make the WebKit KJS VM work on multiple platforms instead of using different VMs per platform. This means we can heavily optimize the microkernel (herein after called the “TiRuntime”) and maintenance, optimizations and profiling can be greatly simplified. We’re talking about ~5K LOC vs. 100K LOC per platform.

This will make it possible to share almost all the Titanium code itself across all platforms. The Titanium runtime itself will be shared code written in JavaScript.

Appcelerator says that Titanium code will be “faster than native code in most situations.”

No date for Ti.Next is given though according to this slidedeck the plan is to have the “first set of developer builds available soon to GitHub repo – possibly in the next 45-60 days”. It adds, “production builds are a ways away.”

Using a WebKit JavaScript engine on Windows Phone, for example, sounds interesting.

Anders Hejlsberg says C# 6.0 to use Roslyn compiler, coming in next Visual Studio after VS 2013

A disappointment at Microsoft’s Build conference last month was lack of news about the next version of C#, version 6.0. C# architect Anders Hejlsberg did present a session, but it was on TypeScript, a language which compiles to JavaScript.

Aside: Hejlsberg talks about the new Xbox music app in Windows 8.1 (and Xbox One) which is written in JavaScript. It is a large app with 500,000  lines of code, and new features are now implemented in TypeScript (30,000 lines so far).

However, Hejlsberg did also talk about C# 6.0 at Build, during this Channel 9 Q&A, though you have to scroll through to reach the C# content (about 34 minutes in).

image

He confirmed that C# in Visual Studio 2013 is the same as before, but there will be new previews of the forthcoming “Roslyn” compiler soon, and that C# 6.0 will be in the “next Visual Studio after” which suggests Visual Studio 2014, presuming Microsoft sticks to its annual release cycle.

“We are at a point where the Roslyn compilers are done,” he said.

Roslyn, Hejlsberg explained, is the new compiler for “C#, and VB, and the language services in the IDE.”

Roslyn performance will be at least as good as the existing native compiler, says Hejlsberg. It is better suited to parallel processing so will take advantage of multi-core machines, “particularly for large projects.”

You can read more about Roslyn here. Microsoft describes it as “opening up the Visual Basic and C# compilers as APIs.” Practical benefits include features like instant porting of VB code to and from C#, and the use of C# and VB as macro languages within a .NET application.

Hejlsberg also says that Roslyn will enable a faster pace of evolution for C# in future.

Another aside: Xamarin, which provides a compiler for C# targeting iOS and Android, gets a nod of approval from Hejlsjberg. “I’m a great fan of their work,” he says.

Blogger (and former Microsoft Excel developer) Wesner Moise provides a transcript of the key points.

Mobile developer survey: Apple iOS most profitable platform, but even Windows Phone is viable

Vision Mobile has released the results of a survey of 6000 mobile developers, sponsored by Blackberry and Mozilla.

Reading through the survey reminds me that despite the critical importance of apps to mobile platforms, surveys which look at developer intent are poor predictors of the future health of specific platforms. High interest or even affection for some new platform tends to dissipate quickly if platform adoption is poor.

Developers influence the success of a platform by developing (or not developing) desirable apps, but this is only one among many factors. Others include:

  • Mobile operators: which devices are they promoting and subsidising most?
  • Devices: which has the right blend of looks, usability and features?
  • Fashion: which smartphones are my friends using?
  • Price: which devices are best value?
  • Marketing: which vendor is doing the best job?
  • Enterprise: in business, security and manageability are important

The report confirms the dominance of iOS and Android and is generally down on Windows Phone while there are more optimistic remarks than I had expected about Blackberry 10 and Firefox OS (but note the sponsors).

Here is a stat that caught my eye though:

Monthly Revenue per developer per platform:

  • $5,200 iOS
  • $4,700 Android
  • $3,600 Windows Phone
  • $2,900 HTML5
  • $1,200 Blackberry 10

There is more money in iOS and Android, but Windows Phone and to some extent HTML5 is financially viable too. On niche platforms like Windows Phone, I guess there is a benefit in having less competition.

Adobe Creative Cloud giveaway at Microsoft Build: sign of a new alliance?

At Microsoft’s Build conference last week, one among a number of giveaways to all attendees was a year’s subscription to Adobe’s Creative Cloud. This was announced by Developer and Platform Evangelism VP Steven Guggenheimer during the day 2 keynote.

image

Creative Cloud costs $49.99 (or £39 + VAT) per month for an individual subscription.

Guggenheimer in effect said that the gift came from Adobe; he suggested that “you guys should send them a nice email”.

The stated purpose of the giveaway is to promote the Digital Publishing Suite (DPS). Creative Cloud comes with DPS Single Edition, which lets you create rich, interactive magazine content and publish it to the iPad and Android. Announced at Build was DPS support for Windows 8.1 in “late 2013”; a sign if nothing else that Adobe is taking Microsoft’s tablet platform seriously.

The odd aspect though is that Build is a developer conference and not quite the right target audience for DPS. On the other hand, there are numerous tools in Creative Cloud that are well suited to developers, including the Edge web content tools, PhoneGap Build, and of course the mighty Photoshop for image editing.

Adobe’s Adam Lehman was interviewed at Build about the Creative Cloud tools, especially Edge, here.

Microsoft is no longer trying to compete with Adobe on design tools. Expression Web and Expression Design have been discontinued. The Flash versus Silverlight wars are also consigned to history, making it easier for these two companies to work together.

Visual C++ will implement all of C++ 11 and C++ 14, some of C99 says Microsoft

Microsoft’s Herb Sutter spoke at Microsoft Build in San Francisco on the future of C++.

image

Microsoft has been criticised for being slow to implement all the features of ISO C++ 11. Sutter says most features are now included in the public preview of Visual Studio 2013 – which has a “Go Live” license so you can use it in production – including the oft-requested variadic templates. The full list:

  • Explicit conversion operators
  • Raw string literals
  • Function template default arguments
  • Delegating constructors
  • Uniform int and initializer_lists
  • Variadic templates

More features are coming in the RTM (final release) of Visual Studio 2013 later this year:

  • Non-static member initializers
  • =default
  • =delete
  • ‘using’ aliases

A technical preview will then follow and Sutter listed possible features of which there will be a subset. Full conformance will follow at an unspecified time.

Microsoft is also promising a full implementation of C++ 14, the next update to the standard, even though the exact specification is not yet fully agreed. Some C++ 14 features will be implemented ahead of C++ 11 features, if they are considered to add high value.

Two other points of interest.

Async/await (familiar to C# developers) will be implemented in the post-RTM CTP because it is such a useful feature for Windows Runtime app developers, even though it is not part of the ISO standard.

Finally, Microsoft will also several C99 features in the RTM of Visual Studio 2013:

  • Variable decls
  • C99_Bool
  • compound literals
  • designated initializers

The reason for implementing these is that they are needed to compile popular open source libraries like FFmpeg.

I asked Sutter why Microsoft is not planning full conformance to C99. He said it was a matter of priorities and that work on C++ 11 and C++ 14 was more important. If there are particular additional features of C99 developers would like to see implemented, contacting Sutter with requests and rationale might eventually yield results.

image

Miguel de Icaza: don’t blame Google for Microsoft’s contempt for developers

Xamarin’s Miguel de Icaza (founder of the Mono project) has complained on Twitter about Microsoft’s Windows Division’s “contempt for developers” when it created the Windows Runtime and a “4th incompatible Xaml stack”, in a conversation prompted by the company’s spat with Google over the YouTube app for Windows Phone. Google wants this removed because it does not show YouTube ads, to which Microsoft counters that the API for showing these ads is not available.

image 

I am more interested in his general reflections on the wisdom (or lack of it) shown by Microsoft in creating a new platform for touch-friendly apps in Windows 8, that lacks compatibility with previous Windows frameworks. “No developer wants to build apps twice for Windows: one for desktop, one for winstore” he also remarked.

The four XAML stacks are Windows Presentation Foundation, Silverlight (for which de Icaza created a version for Linux called Moonlight), Windows Phone (which runs a slightly different version of Silverlight), and now the Windows Runtime.

Could Microsoft have done this differently, without compromising the goal of creating a new tablet personality for Windows rather than continue with doomed attempts to make the desktop touch-friendly?

The obvious answer is that it could have used more of Silverlight, which had already been adapted to a touch environment for Windows Phone. On the other hand, the Windows division was keen to support native code and HTML/JavaScript as equally capable options for Windows Runtime development. In practice, I have heard developers remark that HTML/JavaScript is better than C#/XAML for the new platform.

It is worth noting that the Windows Runtime stack is by no means entirely incompatible with what has gone before. It still uses the Windows API, although parts are not available for security reasons, and for non-visual code much of the .NET Framework works as before.

Adobe announces next Creative Suite, now called Creative Cloud

Adobe has announced the next version of its all-conquering Creative Suite, now renamed (or subsumed into) Creative Cloud.

Availability is set for June 2013. There will not be any perpetual licenses for the updated applications:

Can I purchase a perpetual license for the new Creative Cloud (CC) desktop applications that were announced in May 2013?

No. The new CC versions of the desktop applications are available only through Creative Cloud offerings for individuals, teams, and enterprise. We do not have any current plans to release future CC tools outside Creative Cloud.

Let’s start with the important stuff. I like the new “totems” which are intricate and abstract; but I think it works. Here is Creative Cloud:

image

and here is InDesign, wow:

image

Here is Premiere, can you see the lettering?

image

So what about the technical stuff? Here is quick tour of what’s new.

Adobe always seems to demo Creative Suite on the Mac these days, but says there is feature-parity between Mac and Windows. GPU acceleration of algorithms (such as in the Mercury engine) no longer uses NVidia Cuda but rather Open CL for best cross-platform compatibility.

Typekit Fonts can now be installed on your desktop, and once installed work like any other font – you can use them in Microsoft Office, for example.

image

We quizzed Adobe about what happens to the fonts if you stop subscribing to Creative Cloud. The answer seems to be that you must no longer use them, but whether this is technically enforced is unclear.

Settings synchronisation is a theme across a number of apps including Dreamweaver and After Effects. This touches on a curious aspect of Creative Cloud: despite the name, the applications are desktop applications. Sync settings means you can log in on any machine with the suite installed and get your settings back, including for example web sites in Dreamweaver. The consequence is to bring the make your desktop experience more cloud-like in respect of working from anywhere.

image

Photoshop gets an amazing camera shake reduction feature. Camera shake is a big problem for me, as I rarely have a tripod. The new feature detects how the camera moved during the shot and compensates accordingly. The demo worked great on Adobe’s sample shot, but then it would, so it is not until we get to try this with some of our own images that we will know whether Adobe’s claim of “making unusable images usable” is justified. Still, Adobe has a good track record and I am optimistic.

Other interesting features are a filter for Camera Raw, and a “straighten” effect for perspective distorting in images such as those of tall buildings which look as if they are leaning (though I am sure I have seen ways of handling this in earlier versions too). There is also an rounded rectangle editor, a new artefact removal feature, and the ability to upsample an image so that your low-resolution bitmap magically becomes more suitable for print.

There will no longer be an Extended Photoshop. If you have it, you have it all.

The Kuler colour theme chooser has been rebuilt in HTML.

image

Illustrator gets a CSS properties panel.

Flash has a Publish feature which converts Flash to HTML (We can see where Adobe is going with this). This uses the CreateJS framework; it does not convert ActionScript.

Premiere Pro now includes the engine from Audition for advanced audio editing within the application.

image

Edge Animate is able to animate a sprite across a Motion Path curve for some cool effects.

image

Fireworks is still in the suite, but is not being updated. Bad news for Fireworks lovers.

Dreamweaver has a new CSS designer, and a Fluid Grid Layout for designing adaptive web sites:

image

image

After Effects now embeds the Cineware 4D engine, which is big news if you use both AE and Cineware (as many do).

image

InDesign is now 64-bit with an updated user interface.

image

InDesign also has a “favourite fonts” feature making it easier to manage a multiplicity of fonts on your system.

What have I missed? A lot, no doubt; but I am impressed with how well Adobe has managed its transition from mainly perpetual licences to mainly subscription, how it is rapidly adding features to Creative Cloud, and how it has also managed the transition from Flash to HTML.

RAD Studio XE4 with Delphi for iOS is here. Who will use it?

Embarcadero has released RAD Studio XE4, its suite of development tools for Window, Web and for the first time, Apple iOS. iOS support first appeared in an earlier release, but in preview, and the current effort works using a new LLVM-based ARM compiler so is somewhat unlike the preview. Individual products such as Delphi XE4 are also available separately.

Looking at what’s new in Delphi and C++ Builder in XE4 it is apparent that iOS support is by far the main change since RAD Studio XE3, though there are two other significant changes:

  • Prism, a version of RemObjects Oxygene that compiles a Delphi-like language to .NET (and soon other targets) has been removed. Oxygene lives on at RemObjects.
  • FireDAC, a data access engine acquired from DA-SOFT, is now part of RAD Studio.

I ran up the new RAD Studio on a Parallels VM on a Mac, a VM on a Mac being the best way to try cross-platform development for OS X and iOS. The new IDE immediately presents you with instructions on setting up for iOS development (though I am not a fan of videos, preferring clear text instructions) but I no problems configuring the Mac agent (called PAServer) which makes this work. Start a new mobile app and you can pick a starter template or begin with a blank canvas.

image

I picked the Tabbed Application and was soon trying out my new app on the iOS simulator

image

So far so good, though the ability to run up a quick app is no proof of the quality of the development tool. Still, a few reflections.

As I noted earlier, it seems to me that Delphi developers are either Windows developers using the tried and trusted VCL (in which case there is very little for them in XE4), or developers who are targeting mobile platforms and using the cross-platform FireMonkey framework in order to share code between Windows, Mac and mobile. I guess it is also possible that developers targeting iOS alone will be so taken with Delphi or C++ Builder that they will come in as new users.

VCL developers now have 64-bit compilation and a mature framework, and given that the efforts of Embarcadero are now focused elsewhere, and that even Microsoft is going slow on new features for what it now calls “desktop Windows”, there is little reason for such developers to upgrade.

The key questions then are about the quality of the FireMonkey framework and the iOS support. It is hard for me to be objective, since I know Delphi from of old and it is a familiar environment. Delphi or C++ Builder for iOS has obvious attractions for such developers. I would be intrigued though to know what an Objective C or even a JavaScript developer would make of Delphi, coming to it fresh. I am sceptical whether an Xcode developer would find enough productivity benefit in Delphi and FireMonkey to want to move over, and suspect also that many would not be impressed by the FireMonkey approach to iOS controls, which are generally custom drawn rather than true native, or faked completely like the Segmented Control which you are meant to put together from SpeedButtons with segmented styling, as explained in the Delphi iOS tutorial:

image

Embarcadero is making a big play of being “true native” but native is not just about the executable code (I have written more about this elsewhere) and cross-platform always involves compromise.

There is also some disquiet in the developer community about the cost of keeping up to date with RAD Studio. The full RAD Studio XE4 Architect edition currently costs £2,892.60 ex VAT for a new user, or £1,927.80 to upgrade. If you just want basic Delphi, Delphi XE4 Pro is a more reasonable £642.60 for a new user, or £352.80 to upgrade – but you do not get iOS support for that, that is another £320.40 for the Mobile Add-on, and FireDAC if you need it a further £285.00. When XE3 came out, Embarcadero promised that iOS and Android support would be available later at a “low cost”; of course that is a relative and subjective term, but I can understand if some feel that the price is on the high side. Or you can buy software assurance and get upgrades free; I don’t have prices for that but the cost is significant.

It is unfortunate for Embarcadero that there is intense competition in the iOS tools space, not only from Apple’s excellent and free tools, but also from the likes of Xamarin and Titanium.

None of the above is intended to detract from the achievement of bringing Delphi to iOS, with Android promised, which is considerable.

Changes in the Delphi language for ARM and mobile support

Delphi developers should note changes in the Delphi language coming as a result of the move towards the LLVM compiler for mobile support. Embarcadero has released a paper describing these in detail. The just-released RAD Studio XE4 includes the ARM compiler for iOS, with an Android compiler to follow later this year.

It seems to me that Delphi developers will now fall into two broad camps:

1. Windows VCL developers for whom the new FireMonkey cross-platform framework is of little interest, either because they are not developing for Mac or mobile, or because they prefer other tools for those platforms.

2. Developers who are embracing the new platform targets, migrating code to FireMonkey or starting new projects there, and planning to share code across all platforms as far as possible.

If you are in the first camp, you need not worry too much about language changes yet. I believe it is Embarcadero’s long-term intention to unify Delphi’s compilers around LLVM on all platforms, but when or whether this will happen for Win32 and Win64 is moot; my guess is that what the company now calls the “classic compiler” will be around for a long time yet. However the Mac compiler may migrate to LLVM sooner. (I am speculating).

Currently, RAD Studio XE4 includes five compilers:

  • The Win32 compiler (DCC32)
  • The Win64 compiler (DCC64)
  • The Mac compiler (DCCOSX)
  • The iOS Simulator compiler (DCCIOS32)
  • The iOS ARM compiler (DCCIOSARM)

Of these, only the last one currently uses LLVM, though the iOS Simulator compiler behaves as closely as possible like its ARM cousin. In general the language changes are currently only applicable by default for the LLVM and Simulator compilers as far as I can tell.

What are the language changes? My quick summary of the biggest changes is as follows:

  • One string type only: UTF16, reference counted, immutable (though this is a point of confusion; reading the paper it seems it is not yet immutable as it describes modifying in place, but may become so).
  • 0-based strings. There is a compiler directive $ZEROBASEDSTRINGS, which is off for Delphi XE3 and Delphi XE4, but on for the mobile compiler in XE4.
  • Automatic reference counting. Objects are destroyed automatically when the reference count hits zero. MyObj.Free; does not destroy the object, only reduces the reference count (and destroys it if zero). You can create weak references (which do not increment the count) by using the [Weak] attribute. If you really want to destroy the object, use MyObj.DisposeOf;.

In addition, the With statement is now deprecated.

The language changes are described in detail in the paper The Delphi Language for Mobile Development, which you can find here.