|
This started off as a rant on here but then I realized it was getting long and decided to throw it onto my blog. I've somewhat recently been forced (okay, persuaded) to do some iOS and Android development and it really put the state of developer tools into perspective for me. I was shielded in my little Microsoft bubble of really damn good developer tools and now that the bubble has burst and the red pill has been swallowed, I figured a thank you was in order:
[Code Index] Thank You Microsoft[^]
I was planning to make a transition into more and more mobile stuff but I can't...I've been spoiled with XAML and C#, even considering faults and all, and I just can't go back now. So I'm going to keep focusing more on server-based work, dev tooling and stuff that won't need native mobile apps.
Anyone else here try to make an honest effort to go from the Microsoft ecosystem into Android/iOS development and fail miserably? Well not fail, but ended up hating it?
|
|
|
|
|
Mike Marynowski wrote: Anyone else here try to make an honest effort to go from the Microsoft ecosystem into Android/iOS development and fail miserably? Well not fail, but ended up hating it? While I can see your point... surely you jest? I couldn't stand editing XAML. The editor was slooooooooooooooow. Did I mention slow?
Jeremy Falcon
|
|
|
|
|
It *was* slow, but it has been improved significantly in each release of Visual Studio. XAML is also expressive enough that I rarely use the editor directly anyway - I usually have it in split screen view and I type the XAML manually. Faster, more accurate, less code bloat. I'm a huge advocate of beautiful hand-written XAML.
Even when the editor was slower, I still never found it to be so bad that it become unusable. Keeping things well organized and split into smaller files helped a lot. There was a period of time before I was particularly good with XAML and relied on the editor more than I do now that I remember it being sluggish but I'll take sluggish over hand coding a UI with actual code or using Interface Builder any day.
The kinds of UIs that you can easily build with XAML is nothing short of amazing.
|
|
|
|
|
Mike Marynowski wrote: It *was* slow, but it has been improved significantly in each release of Visual Studio. XAML is also expressive enough that I rarely use the editor directly anyway - I usually have it in split screen view and I type the XAML manually. Faster, more accurate, less code bloat. I'm a huge advocate of beautiful hand-written XAML. I always disabled the visual editor and the XAML code editor was still slow as dirt. I think you'll find most professionals do that, so it's just assumed.
Mike Marynowski wrote: Even when the editor was slower, I still never found it to be so bad that it become unusable. I have, on a large medical project. This was back in VS 2012 mind you, but still.
Mike Marynowski wrote: The kinds of UIs that you can easily build with XAML is nothing short of amazing. Well, I totally agree, but have you used any other UI technologies besides XAML? MS isn't exactly known for originality. There are a ton of things you can do in other platforms. It's simply bringing a web-style layout engine to the desktop is all.
Jeremy Falcon
|
|
|
|
|
Yes, I have. HTML5 development has gotten to a reasonably enjoyable state with a good framework, and my experience using it to build hybrid apps has been quite lovely. Bootstrap is what we generally use right now. Lots of experience with Winforms and Qt which are fine for "standard" desktop application layouts. Interface Builder with its constraint based system is terrible. Built lots of custom game interface engines back in the day.
What other technologies are you suggesting? I don't know of anything that comes even close to the expressibility, cleanliness and flexibility of XAML for modern UI development. HTML5 is kinda coming close in terms of how easy it is to customize but it is nowhere near as powerful or expressive as XAML for complex layouts.
|
|
|
|
|
Mike Marynowski wrote: What other technologies are you suggesting? Well in particular, CSS Level 3 and some pre-processors like SASS/LESS. You can't do good layouts in just HTML. I mean you can, but it's a joke and ugly and static. I'm a bit of a hardcore web developer, and I'd wager, like XAML, most people that knock CSS really don't know much about it.
I remember back in my time spent with XAML, it reminded me of CSS layouts over and over again.
Jeremy Falcon
|
|
|
|
|
When I say HTML I obviously mean HTML+CSS. Like I said, it is getting close to XAML. I way rather build a hybrid app in a web container than use any of the native mobile options. I will be thrilled when HTML gets proper shadow DOM. Understanding inheritance of styles is much simpler, much to the credit of how good the live inspection tools have become. Tweaking styles for a web app live is sooooo awesome and easy. Hell you can build half your app by never leaving Chrome now, which is pretty amazing.
XAML holds a special place in my heart though, largely in part because of the integration with .NET and C#. Everything I do in XAML is possible in HTML+CSS+JS but considerably more painful at the moment.
Have you tried TypeScript? I was playing with the 2.0 release the other day and I must say, it is pretty awesome. When HTML gets shadow DOM and fixes the few outstanding issues I have, I might jump ship entirely to HTML/CSS/TS.
|
|
|
|
|
Mike Marynowski wrote: When I say HTML I obviously mean HTML+CSS. I can't make that assumption... obviously. Kinda hard for me to gauge your level of expertise, with a post like "everything MS does is awesome, nom nom, <3 <3."
Mike Marynowski wrote: I way rather build a hybrid app in a web container than use any of the native mobile options. As a strong web dev, I'm the exact opposite, especially since there's no need for such a container nowadays. 10 years ago, I could understand that. Those days are gone though.
Mike Marynowski wrote: Everything I do in XAML is possible in HTML+CSS+JS but considerably more painful at the moment. Because you're better what what you have more experience in. I'd wager it's not more painful, but then again my experience over 20 years has been more pure web dev and just a 2 year stint in Silverlight. So, of course I'd lean that way.
Mike Marynowski wrote: Have you tried TypeScript? I was playing with the 2.0 release the other day and I must say, it is pretty awesome. Nope, but I'm keen to try it. Used Babel for ES6/2015 a couple times. Although with now Angular all aboard the TS train I'm ready to have another peak at it.
Jeremy Falcon
|
|
|
|
|
Jeremy Falcon wrote: with a post like "everything MS does is awesome, nom nom, <3 <3."
Well with a few exceptions, Silverlight being one of them, everything they put out *is* awesome lol
Jeremy Falcon wrote: there's no need for such a container nowadays
Yes there is - notifications, app store discovery, integration into the system (i.e. being able to call activities that open other apps), creating a keyboard, *easy* system integrated micro-payments, etc etc etc. I can go on and on here. Web apps on mobile can't do a lot of things native apps or hybrid apps can.
Jeremy Falcon wrote: Because you're better what what you have more experience in
Yes, of course, but that's not my point. I don't even mean that in terms of how quickly I can do it, more in terms of the "nicest" and "cleanest" implementation that meets all the requirements. Web stuff is great but common, for a very large class of applications native is much better. Our biggest project involves apps that talks to bingo machines through serial interfaces, output animations across 3 full HD TVs, do system level calls to the OS to arrange video outputs and such, has configurable detailed logging to a local log file (with Log4Net), writes live backup data to a USB stick so if the system goes down it's just a matter of unplugging the stick and plugging it into another computer and off you go again, etc.
The part of the system that staff use to take payments from people on the floor via iPods is a mobile web app, because that's where it made sense to use one. Can we do the rest with a node.js + website system? Yes, but it would be bloody mess and it would be significantly more complicated. And the performance of the animations would be crap.
My point is...HTML/JS apps are not a proper substitute for native development yet, and likely won't be for a while. I like the web, but it is unsuitable for the stuff I do. Hence the painful part.
|
|
|
|
|
Mike Marynowski wrote: The part of the system that staff use to take payments from people on the floor via iPods is a mobile web app, because that's where it made sense to use one. Can we do the rest with a node.js + website system? Yes, but it would be bloody mess and it would be significantly more complicated. And the performance of the animations would be crap. Oh, you're preaching to the choir on that one. As much as I like node, I don't drink the kool-aid thinking it does everything including make toast. But I am glad it exists.
Mike Marynowski wrote: My point is...HTML/JS apps are not a proper substitute for native development yet, and likely won't be for a while. I like the web, but it is unsuitable for the stuff I do. Hence the painful part. Well sure, but my point was in the context of the web.
Jeremy Falcon
|
|
|
|
|
Well of course in the context of the web a website will be better, haha. I don't disagree, and we have many websites and web apps as part of our projects where it makes sense.
If you need to go native though, XAML is really in a league of its own for building interfaces as of right now.
|
|
|
|
|
If I remember correctly I think VS2013 really brought some really nice speed improvements. I have yet to experience a bad slowdown in XAML editing in VS2015.
I do remember VS2012 getting a bit sluggish at times but then again I probably wouldn't have used XAML for a large medical application in 2012. Back then the only thing I used it for was full custom interfaces like touch screen kiosk apps and things of that sort. I would probably have just stuck to WinForms for a medical app.
Today that's definitely not the case though. XAML and the tooling has gotten so good and MVVM is amazing and indispensable at this point.
We actually don't do MVVM here, we have a whole framework we use internally to do what we call MVS, or Model View State, which is kind of a cross between MVC and MVVM. We're considering open sourcing and documenting it with tutorials and such but we are working on getting another surprise ready to release first But between XAML+MVS and the other project we will release first, we pump out apps 5 times faster than with anything else at the moment. I <3 XAML.
|
|
|
|
|
Gotcha. Whatever the case, I have no need for it anymore since Silverlight is dead and I do web dev, but that's good to know.
Jeremy Falcon
|
|
|
|
|
MVS? Surprise, surprise We actually developed a kind of what you called MVS system for our HTML/CSS/Javascript (hybrid) applications ...
|
|
|
|
|
Yeah I could see that, HTML/JS would definitely be a good candidate for doing something similar! It would fit perfectly with the templating and binding frameworks available and the structure of web projects.
|
|
|
|
|
Mike Marynowski wrote: XAML is also expressive enough that I rarely use the editor directly anyway What, you mean you can modify the top (editor) screen, I thought it was there for display only. Oh wait I have been known to click on an object and delete it, thai is the extent of editing done in the top screen.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Yes, definitely agreed. Sometimes I use the slider to change margins or the color wheel because it is nice to finely tweak the value over a smooth range. I also like the scaffolding for creating a copy of a template or style, but then I hand delete 90% of the bloat and just keep what I need.
Animations in Blend for Visual Studio is just about the only thing the editor is used extensively when we have an animation heavy component to the app. It's actually pretty fantastic in terms of how easy it is to make great animations but the markup it produces is god awful, so we tuck away animated stuff into its own controls and only edit it with Blend.
|
|
|
|
|
Jeremy Falcon wrote: I couldn't stand editing XAML. The editor was slooooooooooooooow. Did I mention slow?
OMG! Someone actually use the editor?!
|
|
|
|
|
Yes.
Jeremy Falcon
|
|
|
|
|
Jeremy Falcon wrote: I couldn't stand editing XAML.
I've recently been writing one app natively on all platforms.
I wrote it as a winform. Then i converted it to Android. That was very easy.
Next, I decided to write it as a UWP Universal Windows Platform app. Pain. Agony. XAML.
Now, I'm writing it as an iPhone app.
Anyways, the other painful thing about the UWP XAML thing is that you literally "type your user interface" and all the editing takes up tons of space vertically on the screen. it's such a pain.
And slow.
|
|
|
|
|
Converting an app from Winforms would be a lot of work because MVVM/XAML is a completely different paradigm. It's only really suitable for a new development written ground up the way you have to write MVVM/XAML apps. It also has a huge learning curve, much like HTML/CSS - I hated it at first too, and it takes a long time before you get comfortable enough with it to write code that you can look at and say "ah, what a work of beauty"...but when you get there, it becomes indispensable and you never want to go back to procedural UI layout.
I have a fairly old box by today's standards and I have yet to experience slowness on VS2015. What are you using?? I also have resharper going and that takes up a whole lot of system resources on its own and still no problems.
I never understood developers that would hold out upgrading memory or to an SSD to be able to use more powerful tools. Whats $300 or $400 extra to save you hours and hours of building an app?
XAML tools used to be a bit slow but since VS2013 service pack something, I haven't had any such issues.
|
|
|
|
|
Jeremy Falcon wrote: Did I mention slow? No, but you forgot to mention 'dumb and buggy'. It makes a lot of assumptions about what you would use XAML for and quickly stops working when something is not as it expects.
It easily took the first place as my 'favorite' Mickeysoft bugware. Previously it was the ASP.Net webform editor, which at least never became completely useless.
The language is JavaScript. that of Mordor, which I will not utter here
This is Javascript. If you put big wheels and a racing stripe on a golf cart, it's still a f***ing golf cart.
"I don't know, extraterrestrial?"
"You mean like from space?"
"No, from Canada."
If software development were a circus, we would all be the clowns.
|
|
|
|
|
I don't know what you mean by "it makes a lot of assumptions" - can you explain?
The editor used to be horribly buggy. That hasn't been the case for a very long time now though, perhaps it would be worth re-evaluating
A lot of what I said is also dependent on the kind of development you do. The apps we build now have DPI-independent full custom designs. Whatever a designer can design in Illustrator we need to be able to translate easily into an interface, and XAML makes it sooooo easy.
If you are building more standard apps then the learning curve might not be worth making the transition, but I will say that once you get over the learning curve you never want to use anything else again.
|
|
|
|
|
Been through the same thing, though it was a Mac, exploring iOS and then a Linux project for me.
|
|
|
|
|
Bugger mobile, I shy away from entering the web stack let alone the non MS mobile arena.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|