Archive for April 30, 2015

Thursday, April 30, 2015

Microsoft’s New Middleware: Islandwood and Astoria

Alex Wilhelm and Frederic Lardinois (comments):

Today as expected, Microsoft announced that developers will be able to more easily bring their Android applications to Windows devices. The company said developers will be able to “reuse nearly all the Java and C++ code from an Android phone app to create apps for phones running Windows 10.” Developers will also be able to recycle their Objective-C apps for iOS using new tools in Visual Studio.

Tom Warren:

“If they’re using some Google API… we have created Microsoft replacements for those APIs.” Microsoft’s pitch to developers is to bring their code across without many changes, and then eventually leverage the capabilities of Windows like Cortana, Xbox Live, Holograms, Live Tiles, and more.


Microsoft is also looking toward existing Windows desktop app developers with Windows 10. Developers will be able to leverage their .NET and Win32 work and bring this to Windows universal apps. […] Microsoft is using some of its HyperV work to virtualize these existing desktop apps on Windows 10. Adobe is one particular test case where Microsoft has been working closely with the firm to package its apps ready for Windows 10. Adobe Photoshop Elements is coming to the Windows Store as a universal app, using this virtualization technology. Performance is key for many desktop apps, so it will be interesting to see if Microsoft has managed to maintain a fluid app experience with this virtualization.

Peter Bright:

With Project Islandwood, iOS developers will be able to take their iOS apps and build them for Windows. Microsoft has developed an Objective C toolchain and middleware layer that provide the operating system APIs that iOS apps expect. A select group of third parties have been using the Islandwood tools already, with King’s Candy Crush Saga for Windows Phone being one of the first apps built this way. King’s developers had to change only a "few percent" of the code in order to fully port it to Windows Phone.

For Android, there is Project Astoria. Rumors of Android apps on Windows have been floating around for some time, and in Windows 10 Microsoft is delivering on those rumors. Astoria will allow Android apps to run in Windows. Specifically, Windows Mobile (and yes, that’s now officially the name for Windows on phones and sub-8 inch tablets) will include an Android runtime layer that’ll let them run existing Android apps (both Java and C++) unmodified. Unlike Islandwood, which will require developers themselves to recompile their software to bring it to Windows, Astoria will in principle work with any old APK, without requiring the developer to do anything but publish the app in the store—as long as the APK sticks to the APIs that Astoria will provide.

John Gruber:

The solution sounds complicated. Games are one thing — cross-compilation and shared code bases work fine for many games. But for actual apps, running apps designed for platform A on platform B never looks or feels right, even if technically it “works”. Running apps from platforms A and B on platform C? Yikes.

Frank A. Krueger:

It seems you still have to rewrite the UI since Microsoft can’t ship Cocoa Touch.

Update (2015-05-02): Marcel Weiher:

They don’t claim or shoot for complete coverage or compatibility with a specific iOS version.

Swift is not there, dev said “coming”, suit said “we have no comment” (the interaction between the young and slightly insecure program manager and the old and very comfortable dev. was fun to watch).

Project conversion is one-way and apparently one-time, which could be an issue. Dev immediately said “why not two-way, hey, that’s a good idea, we’ll do that”.


It seems Microsoft actually wrote their own Objective-C runtime. I mean otherwise the guy would have said “we ported Apple’s runtime” or something like that. But he said “We are providing you with a great Objective-C runtime.”

Project Islandwood:

“Following the launch of Windows 10, we will release “Project Islandwood”, a Universal Windows Platform Bridge toolkit that enables you to develop Windows apps using Objective-C.

Ken Ferry:

Stoked and impressed that Microsoft implemented auto layout and nibs as part of Islandwood!

Rosyna Keller:

So it looks like Microsoft acquired Inception Mobile for ObjC on Windows.

It seems Microsoft is taking an identical path for Project Islandwood that Wine took for Win32. Expect similar issues.

Microsoft Visual Studio Code


Build and debug modern web and cloud applications. Code is free and available on your favorite platform - Linux, Mac OSX, and Windows.

Frederic Lardinois (comments):

This marks the first time that Microsoft offers developers a true cross-platform code editor. The full Visual Studio is still Windows-only, but today’s announcement shows the company’s commitment to supporting other platforms.


Visual Studio Code offers developers built-in support for multiple languages and as Microsoft noted in today’s Build keynote, the editor will feature rich code assistance and navigation for all of these languages. JavaScript, TypeScript, Node.js and ASP.NET 5 developers will also get a set of additional tools.


What I took from it is that Microsoft used to make all their money from Windows and Office, but now the company is looking to transition towards being a service company rather than a product company. As a service-oriented company, restricting developers towards a single platform doesn’t really help them, so ultimately it’s in Microsoft’s best interest to get .NET out there as much as possible so that people will want to choose their services.


The Visual Studio Code shell is built on GitHub’s Electron Shell, but the editor is a new and improved version of our own Monaco editor, which we use on Azure Websites, Visual Studio Online, and a number of other web sites, and in the F12 Tools in Internet Explorer.

The Nucleus of Atom (via Rosyna Keller):

Another great thing about writing code for Atom is the guarantee that it’s running on the newest version of Chromium. That means we can ignore issues like browser compatibility and polyfills. We can use all the web’s shiny features of tomorrow, today.

For example, the layout of our workspace and panes is based on flexbox. It’s an emerging standard and has gone through a lot of change since we started using it, but none of that mattered as long as it worked.

With the entire industry pushing web technology forward, we’re confident that we’re building Atom on fertile ground. Native UI technologies come and go, but the web is a standard that becomes more capable and ubiquitous with every passing year.


One key difference between Microsoft’s offering and Atom is that Monaco runs on all modern browsers while Atom can only run on specialized version of Chromium alone.

Siri 3

Derrick Harris (via John Gruber):

Siri’s Mesos backend represents its third generation, and a move away from “traditional” infrastructure. Apple’s work with Mesos and J.A.R.V.I.S. predates the open-sourcing of Marathon (by Mesosphere) and Apache Aurora (by Twitter) in 2013.

Not only has Mesos helped make Siri scalable and available on the infrastructure front, it has also improved latency on the app itself.

After having a great experience with Siri in January, I’ve noticed a drop-off. Over the last month, the “Hey Siri” feature has never worked for me in the car. It’s as if it’s not even listening. It used to work consistently in the car (and still does in my office). I’ve also seen a recurrence of it being slow or unavailable when I’m out and about. It will either do nothing or say that there’s no Internet connection, even though the phone has full bars and other apps can do things online.

Aside from reliability, I’d like to see a way to turn off Siri’s reminder parser. Usually what I’m doing is saying “Remember to …” to create a reminder in OmniFocus. I always want to create a plain reminder with some text: no due date, etc. Yet if I say anything that sounds like a time, a day of the week, the name of a holiday, etc. Siri will pull words out of my sentence and turn them into metadata, so that the actual text is unrecognizable. I think it used to only try to interpret the text if I said “Remind me to” instead of “Remember to.”

BBEdit 11.1

My favorite new feature in BBEdit 11.1 is the Git menu. I also like the new “Search in Document’s Folder” command and the way that the Differences window now uses underlines to show which parts of a line changed.