What's new

MS really isn't making it easy for developers sometimes

ChemCat

New Member
First of all, allow me to introduce myself. I'm a structure engineer by day and windows 8 developer by night. Kinda like Bruce vs Batman LOL. I used to develop for android, but have stopped cold turkey there. Why? I got tired of worrying about compatibility over there. There are too many compatibility issues with android due to fragmentation, and I had to hold my breath each time google updated their system. It seemed like each time a new update came out, about a quarter of the apps stopped being compatible.

Anyway, I have a funny story about metro development. This will give you an idea how hard it is that MS is making for us developers and that why there aren't many quality apps in the winstore.

I've been developing a big project called ChemCat in both the desktop environment and metro. The desktop version is compatible with systems as old as xp. Why? Because most lab computers still run on xp.

So, I wanted to add a printing feature. Over on the desktop version, it took 4 lines of code. I wrote it with my eyes closed. Very simple. I went over to metro and wrote in the same 4 lines of code. No-go. So, I went online to figure out how to print in metro. Thought it couldn't be that hard, right? Go ahead and try to search for printing in windows 8 metro. See what I mean.

Tons of developers complained about this. The MS sample for it makes no sense. After spending 2 hours trying to figure out the MS sample, I gave up. I began to read the blogs. Some bloggers figured it out, but not completely. For example, some figured out how to print and put their codes online. The shortest and simplest I found was a whopping 130 lines of code! I implemented it and it worked. But when I tried to print more than 1 page the system crashed. Like catastrophic crash, not just a simple exit-out-of-app.

So, I sat there and kept banging my head against the monitor. The result was a whopping 220+ lines of code. 220+ lines of code to freakin' print out a simple page of document.

This is just an example. There are APIs that used to be very simple to do in desktop mode are now really really hard to do in metro. Who was the genius that decided to make us write hundreds of lines of code just to do a simple printout of a document?

Now, you know why so many developers are still hesitating to move over to windows 8 metro. This is kinda tragic, really. Most developers for app stores are freelance. This isn't our day job. MS can't expect us to spend hours and hours just on something as simple as printing. MS needs to make it easier for us to do this.
 
Thanks for some insight into the process. Your example is about printing, and I can see where this would be a problem for certain functional apps (I wonder what Delta's flight apps will do and if they ever need to be printed--probably not since the whole purpose is to go paperless), but I think it's a reach to say many developers are hesitating to move over to Win8 Metra solely for printing. There has to be other variables involved there, ROI probably being a bigger reason due to small market share. Besides a print-out function, how are the APIs for other things? (Not that I'd understand the details since I'm not a progammer, but if MS is making it hard for devs on multiple fronts than just printing, they should figure it out ASAP.)
 
Thanks for some insight into the process. Your example is about printing, and I can see where this would be a problem for certain functional apps (I wonder what Delta's flight apps will do and if they ever need to be printed--probably not since the whole purpose is to go paperless), but I think it's a reach to say many developers are hesitating to move over to Win8 Metra solely for printing. There has to be other variables involved there, ROI probably being a bigger reason due to small market share. Besides a print-out function, how are the APIs for other things? (Not that I'd understand the details since I'm not a progammer, but if MS is making it hard for devs on multiple fronts than just printing, they should figure it out ASAP.)

I didn't say many devs aren't moving over just because of printing. You are focused on the tree and missing the forest.

Try to think about it. If it takes 200+ lines of code to print out a document while it took just 4 in desktop, how do you think other functionalities will be? Many things are made much harder to do in metro than desktop.

Here is another example. I am currently working on 3D rendering for modeling of molecular structures. Remember those little molecules in chemistry class and how you could assemble them to see what they look like? I'm working on an engine for people to model molecules right now.

Again, in the desktop, it is much easier. Over in metro, it takes 10 times more coding to get the same effect.

Think bigger. Don't focus solely on the example. Apply the example to other things.
 
Last edited:
I didn't say many devs aren't moving over just because of printing. You are focused on the tree and missing the forest.

Try to think about it. If it takes 200+ lines of code to print out a document while it took just 4 in desktop, how do you think other functionalities will be? Many things are made much harder to do in metro than desktop.

Here is another example. I am currently working on 3D rendering for modeling of molecular structures. Remember those little molecules in chemistry class and how you could assemble them to see what they look like? I'm working on an engine for people to model molecules right now.

Again, in the desktop, it is much easier. Over in metro, it takes 10 times more coding to get the same effect.

Think bigger. Don't focus solely on the example. Apply the example to other things.

But your opposite assumption doesn't work either; just because one specific function increased quite a bit in coding complexity doesn't automatically mean all other legacy functions suffered the same fate. Ultimately it really depends on what an app is trying to do, and there are so many possible functions. That there isn't a Cisco AnyConnect app ends up being MS' fault, but what about photo apps with more functions like adding text and line draw, or more robust RSS feed apps, etc. There has to be a venue where devs can be in contact with MS proper too; it would make sense to make some noise that way.

Don't extrapolate solely on the example.
 

Documentation for medicine is pretty complete, also. It doesn't mean everyone could read and understand them.

I never said there was no documentation of printing. I said the way it is implemented makes it very hard for indie devs like myself to implement. Large companies have the money, manpower, and resources to figure it out. Indie devs like myself have a day job. We shouldn't be expected to spend hours writing out hundreds of lines of codes to do what used to be 4 lines of code on desktop.

By the way, the sample you linked to is for 8.1. Just nitpicking. Have you tried implementing what's in that sample into your app? It is next to impossible.

Here is a blog that shows you step by step on how to print out a simple "hello world" line.

Windows Store Apps and XAML Based Printing?Rough Notes - Mike Taulty's Blog - Mike Taulty's Blog

And even then, if you follow that example your app will crash if you try to print out more than 1 page. In fact, the sample code that you linked to will only work with 1 page. Go ahead and try to print more than 1 page. Took me hours to figure out how to print out more than 1 page, and I did that on my own. No documentation to do that.

Again, I'm not saying there is no documentation. You are right that the documentation are pretty complete. But these documentations are for whole teams of developers funded by large companies. Indie devs like myself have no chance to compete.

Edit.

And you haven't addressed the main point.

Why did MS decide to make something so trivial into something so complicated? Again, printing in the desktop version takes 4 lines of code. I can probably shorten it to 2 lines. In metro, it takes at least 2 classes referencing each other in addition to a method that is 100 lines long. Don't believe me? Just create an app and try to implement the example provided by MS.
 
Last edited:
Oh, I forgot that MS is adding stuff with 8.1, like VPN support (no idea how robust that is). So they're certainly adding more APIs down the line, just a matter of what and when, I suppose.
 
But your opposite assumption doesn't work either; just because one specific function increased quite a bit in coding complexity doesn't automatically mean all other legacy functions suffered the same fate. Ultimately it really depends on what an app is trying to do, and there are so many possible functions. That there isn't a Cisco AnyConnect app ends up being MS' fault, but what about photo apps with more functions like adding text and line draw, or more robust RSS feed apps, etc. There has to be a venue where devs can be in contact with MS proper too; it would make sense to make some noise that way.

Don't extrapolate solely on the example.

I'm not extrapolating based solely on that example. I've even provided another example.

Everything is harder to do jumping from a wpf project to metro. Very trivial things are now made very complicated to do on metro. I am committed to my current project, but I can see how an indie dev stumbling upon something as trivial as printing would be turned off by it.

Actually, that's not so far off. I know a guy who's a professional dev. He develops for the desktop environment for his company. He told me that he tried to develop a couple very simple projects in metro and then gave up. He found himself spending way too much time doing very simple things. So, it wasn't worth it for him to invest the time. I didn't think anything of what he said till now.

Just sayin'. Because of the MS incentive of $100/app a few months ago, a whole bunch of crap-apps showed up. These apps are next to useless. In the mean time, the only quality apps are coming from software companies. Indie devs like myself are made to jump through hoops to create quality apps.
 
Modern UI Apps are completely different from Win32 Binaries mainly to address inherent insecurities. Modern UI Apps run in an isolated environment and data is passed to other subsystems through a secure tunnel.
 
I'm not extrapolating based solely on that example. I've even provided another example.

Everything is harder to do jumping from a wpf project to metro. Very trivial things are now made very complicated to do on metro. I am committed to my current project, but I can see how an indie dev stumbling upon something as trivial as printing would be turned off by it.

Actually, that's not so far off. I know a guy who's a professional dev. He develops for the desktop environment for his company. He told me that he tried to develop a couple very simple projects in metro and then gave up. He found himself spending way too much time doing very simple things. So, it wasn't worth it for him to invest the time. I didn't think anything of what he said till now.

Just sayin'. Because of the MS incentive of $100/app a few months ago, a whole bunch of crap-apps showed up. These apps are next to useless. In the mean time, the only quality apps are coming from software companies. Indie devs like myself are made to jump through hoops to create quality apps.

Most apps are useless. I don't follow the app scene, honestly, because my productivity ecosystem is entirely MS Office, Acrobat, and a web browser, but I would wager that the vast majority of apps that increased the Win store were games, and there are a ton of photo effects things, and who knows what else. I do agree that if MS is making it too hard to make a class of functional apps compared to iOS (how's their printing and 3D stuff?), they need to fix it quick. Have you seen anything interesting in the 8.1 APIs?
 
Modern UI Apps are completely different from Win32 Binaries mainly to address inherent insecurities. Modern UI Apps run in an isolated environment and data is passed to other subsystems through a secure tunnel.

So... in other words, what used to take 4 lines of code is now 200+ lines just to print a simple text string. Thank you for clarifying.
 
Most apps are useless. I don't follow the app scene, honestly, because my productivity ecosystem is entirely MS Office, Acrobat, and a web browser, but I would wager that the vast majority of apps that increased the Win store were games, and there are a ton of photo effects things, and who knows what else. I do agree that if MS is making it too hard to make a class of functional apps compared to iOS (how's their printing and 3D stuff?), they need to fix it quick. Have you seen anything interesting in the 8.1 APIs?

Haha, it's impossible to print in iOS. iOS is so locked down, you can't do anything that's real productive in there. The only reason iOS is so popular is because of the apple brand and Apple has spent a billion dollars training people to think of tablets as for fun and games only.

I'm a field engineer managing constructions. We used to have to carry very large 3,000+ page documents around with us for references. Every agency has their own rules and regulations. Nowadays, I just carry around my windows tablet. The other engineers are catching up. They're doing the same thing. But when other people look at us, they just assume we're carrying those tablets around for fun and games. Because of Apple's campaign against mobile productivity, people can't imagine a tablet being good for anything else but fun and games.

Android is better because you can "share" your documents with something like printer-share. There used to be a lack of drivers for the printer-share app. It's a lot better now. I haven't had a problem with it. so, when I want my android app to print, all I gotta do is add a share feature to it and the user can point it to printer-share. Simple.

Windows 8 metro is, of course, the most complete. But again, it is so complete that the development behind the apps are geared toward large companies while leaving indie devs like myself out in the cold. That's why indie devs are hesitating to come over to windows 8 development. MS needs to realize that if they want more quality apps in the winstore and not just crap-apps, they need to make it easier for us indie devs to write out quality apps for them. And making the print protocol 200+ lines long is not easier.
 
Last edited:
Back
Top