Windows8 any takers?

[quote=“sonic59”]Metro - A design language common to Windows 8, Windows RT, Windows Phone 8, Xbox [1] [2]
[/quote]

This is getting silly. When I pointed out that the two mechanisms for expressing ‘Metro’ weren’t yet C++ (or even hacked up C++) yet, you posted a Windows 8 sample that uses one of the mechanisms, and claimed that it did not. Since I’m actually cursed enough to have to work with this craptacular, I tried to break it down for you, metro is a new UI which either sits on top of either good 'ol Win32, or a native WinRT, like arm. Now, since metro requires one of the tools to describe UI (and Microsoft went so far as to modify C++ to support the same scattered class definitions created by these tools), you are citing the tools you originally denied as not necessary to somehow prove that metro is a language, not a UI… Footnotes (which are cute by the way) or not, this is called ‘circular reasoning’. Perhaps even, gasp, arguing for the sake of arguing.

Fortunately for everyone, I don’t need to be right. I am happy to defer to your vastly deeper knowledge. Hopefully you will start putting that knowledge to work porting Juce to the platform. Having dug down enough to fix a few bugs in the native layers of iOS, Android, and Linux it strikes me that the project should not be especially hard, just big - all the more reason for me to stop distracting you from it…

[quote=“atom”]I’ve been running windows8 on my desktop for some time now, and i must say the METRO UI is useless on a classic keyboard+mouse setup, it’s a pain to navigate and i don’t know if i want to get used to that (i stay on the classic side of the windows UI, though the lack of Start button and some other changes make it even harder to work with).
[/quote]

It hasn’t grown on me either. It’s OK at phone size, kind of fun. But even at tablet size it gets on my nerves in a hurry. But it tests really high with certain demographics of consumers, so MS thinks they have something really game changing.

I wish I could repost some of the comments from the private forums, some were a great balance of funny and scathing. But, personally, I’m not sure if the respite is long term or just a reflection of all the last minute changes to WinRT. Looking at the Surface announcements, clearly the Pro (good 'ol x86) is expected to be the interesting product this year.

I hope I am not coming off that way, it certainly is not my intention. You are obviously very knowledgeable about this subject and have access to information sources that I don’t have. I simply want to understand things correctly.

I think our back and forth pretty much comes down to mis-interpretations over “metro” and “metro style app”. I’ve been saying stuff like “metro app” and “C++/CX WinRT app” when I really meant “Metro style app”. Whenever you’ve been talking about metro, I’ve always thought you were talking about “Metro Style apps”, but in hindsight I think you were actually talking about “Metro” (Design Language).

With that in mind, I think we are in agreement.

“Metro” (Design Language) looking applications - UI must be written using XAML or Javascript
“Metro Style apps” - UI can be written using XAML, Javascript or DirectX (pure C++). UI does not have to look like “Metro” (Design Language).

Well I’m hoping all of the updates to the Direct2D code I wrote and that Jules has put into the tip will help speed up this process.

That, I totally understand :slight_smile:

Recently Microsoft fixed a date for its Windows tablet announcement in October. It doesn’t seem sensible to do anything until it’s clear whether the tablet is a Newton. Given Apple’s dominance currently, Microsoft may be getting ready for a real push on tablets; but when Microsoft went into the game console market, it moved xbox forward very slowly at first. So, it’s difficult to know until October. Either way, there’s no better way to go multiplatform than Juce )

At this point in time it seems to be clear that there will be no way to get an app written with JUCE into either the Windows 8 or the Windows Phone app store without support for the new previously named metro style skds.

[quote=“jules”]I think that WinRT actually looks like a pretty good API, but the thought of supporting yet another completely new platform… Aghh…!!
[/quote]

I just took about 20 minutes to describe in details how horrid and disgusting the Metro API actually is, and it must have been so bad my browser crashed and when I restored it it was all gone.

Long story short - Metro is a good API in the way that it works well and is complete. However, working with Metro, the “amazing new paradigms” it enforces, the extra “language extensions” - new keywords and operators, intended to make your code non-portable - it really makes me want to puke. I spent about an our watching a presentation on Metro style app development with C++, about half way through I simply couldn’t get any more and vowed to never ever touch the Metro API even with a stick.

Don’t get me wrong, I like the visual aspects of Metro, the minimalism, the USER experience it provides. But the DEVELOPER experience is a completely different picture. The new keywords, the new operations, the new partial classes - who would want his classes spread across a dozen of different source files, to spend more time tracking what is where than actually developing? And Metro’s operations - don’t even get me started. The concept is that for every operation, before you can execute it, you have to tell it what happens next. So in a regular C++ API you’d do something like:

File file = FileOpenDialog(); if (file) someObject->name= file.getName;

And that’s it!!!

With Metro it is a little more “elegant”

FileOpenPicker openPicker = ref new FileOpenPicker(); auto pickOperation = openPicker->PickSingleFileAsync(); pickerOperaiton->Competed = ref new AsyncOperationCompletedHandler<StorageFIle^>( [someObject](IAsyncOperation<StorageFIle^)^ operation) { StorageFile^ file = operation->GetResult(); if (file) someObject->name = file->FileName; } )

This horror done in the name of Asynchronicity, even thou there are much less painful ways to keep an app from blocking the UI thread, like… umm… simply having a dedicated UI thread… But it gets even better, if you have a number of operations in a row it gets really nice, you cannot start operation1 before you define its Completed handler, so if the Completed handler is operation2, you cannot start operation2 and subsequently operation1 before you define the Completed handler for operation2. And it gets EVEN BETTER, you have to start operation2 inside the handler of operation1, so you must nest the handler for operation2 inside the handler of operation1. And if you have 10 operations in a row, you pretty much end up with a wall of code that goes back in time before the age of procedural programming in some odd, backwards cascading fashion. Or alternatively, you can use regular functions in the place of the lambdas, but that only makes the code less readable, and you still have to nest the handler function pointer within a handler function, according to the order of the operations.

Oh, and last but not least, I think I should mention the InsanelyLongOperationStatusHandlerNames that can put to shame even the most old-school hardcore C API in existence.

I honestly cannot imagine anyone willingly putting himself through this hell, it either has to be demanded by an employer or you have to be a blind fanatical MS fanboy devotee to do that to yourself.

As for me, a few dozen lines of code and the “Metro” style can perfectly be implemented in a good, cross platform framework like JUCE or Qt that will still offer the nice USER experience, with the added benefit of being portable, while saving me the horrible DEVELOPER experience that the Metro API is designed to conform to (no, it is not optional, MS knows if it is optional on one will use it). And if that closes the doors to the MS app store for my app, well that is going to be an obstacle only for people with less than 2 working brain cells.

That’s a common complaint about javascript in general, nonethless I know what you’re saying. I tried to find a Metro API for audio I/O last month. On the developer site there was a long chunk of code without much documentation. A tiny footnote at the bottom said it didn’t work, and to click a link for the code fix, but the link 404ed.

LOL a wall of dead code with a dead link for the fix, gotta love MS

BTW I haven’t paid that much attention into it, but I have heard people complaining Windows 8 will actually make it harder to write low latency high performance audio applications. Something to do with the kernel and the architecture or… I don’t know. I’ve heard statements of the sort “worse than Android” which is about as lousy as it gets in terms of audio latency. I myself plan to give 8 the Vista treatment - skip it, unless I get a slate or something, but I won’t be putting it on my workstation PC. Hopefully by the time Windows 9 arrives either MS will have learned from their mistakes or Linux driver support will be mature enough to leave all the MS crap behind for good.

Thanks for the insight. I’ll follow that )

[quote=“jules”]I think that WinRT actually looks like a pretty good API, but the thought of supporting yet another completely new platform… Aghh…!!

Very likely. There were no midi APIs in iOS to start with, either.[/quote]
Justin Angel reported on a “leaked” version of Window 8.1 (Pre-beta Windows 8.1 WinRT Developer APIs) which showed MIDI in the USB section, which has since been left out or is hidden in the preview version of Windows 8.1. I’ve reached out to several Microsoft employees about the this, but have not yet gotten an answer.

Seems there was light at the end of the tunnel, which means it may shine again. :wink:

Oh and it’s my first post on JUCE, BTW! :slight_smile:

In response to some of the MS negativity above, I need to say that I think WinRT is really very cool. Both the API’s and its style.

I personally have no problem getting around the RT environment with a keyboard, mouse or with touch. I am using Cubase 7 which runs on the desktop side of W8. No problems there either! :slight_smile:

As for changes mentioned… it’s inevitable. If we are ever to move on, languages like C++ will go extinct at some point. Nothing lasts forever and that definitely applies to technology of any kind. And please, I am not dissing C++ in any way, I mean, it’s the only way of doing DirectX on Windows 8, at the moment.

If one examines the field of “recent” platforms, we can see that the code abstraction from several companies, JAVA, .NET, DirectX, etc. Most of them have been quite successful and run on many platforms. I think it’s fairly apparent that the days of coding directly for computer hardware (from an application’s perspective) are numbered.

Hi Jules!

Have you had any more thoughts on doing a Windows 8 (desktop/phone) port of Juce?

Best wishes,

Pete

[quote=“peteatjuce”]Hi Jules!

Have you had any more thoughts on doing a Windows 8 (desktop/phone) port of Juce?
[/quote]

Well, my thoughts are still: “that’d be cool, but when the hell would I have time to do it!?”

I so know that feeling. :slight_smile: