14 ms·
Flat UI has been the downfall of the Windows UI. Firstly, it is ugly. Secondly, it is not intuitive. Thirdly, it is hard to differentiate from Web apps. From a
by flowerlad 6y ago
Flat UI has been the downfall of the Windows UI. Firstly, it is ugly. Secondly, it is not intuitive. Thirdly, it is hard to differentiate from Web apps.
From a developer point of view that last point is very important. If your native app is not going to look or feel any different than an app built using Web technologies why limit your customer base to Windows users?
Sure, native apps are better at reducing resource consumption but if your app offers significant functionality users won’t mind if it uses some extra memory. This is the reason Microsoft’s own Teams and VS Code products were built using Web technology.
Another issue from a technical pov is that XAML, MVVM and 2-way data binding are outdated. MVVM introduced 2-way data binding to the world. Since then every JavaScript framework copied 2-way data binding including EmberJS and Angular. Today we know 2-way data binding is gimmicky and makes programs hard to debug. This is the reason React uses unidirectional data flow.
- aloisdg 6y agoIsnt vue.js a MVVM library with 2-way data binding? It works well. As far as I know, Aurelia is also a modern mvvm library.
- newhotelowner 6y ago> Isnt vue.js a MVVM library with 2-way data binding? It works well. Not for me. I ended up just following the old way - on change handler to handle the changes in the form. It eliminated lot of issues/bugs.
- earthboundkid 6y agoVue is nice because it takes the boilerplate out of simple variables that map to <input> while also supporting events for more complicated data flow.
- nick_ 6y agoJust curious, what do you find hard about MVVM to debug?
- flowerlad 6y agoHere's the key developers behind Embersj talking about why they moved away from two-way data binding: http://thechangelog.com/131/ http://thechangelog.com/131/ (fast forward to 0:44): "It is easy to end up in a state where you can't yourself explain how data flows through it. Even though both Angular and Ember have events and data bindings, data bindings feels so cool that people started tunneling events through data bindings. People are abusing two way data bindings to express something that is fundamentally an event. Ember 2.0 is moving away from two way data bindings as the primary method of communication to events. We added too much sugar around two-way data bindings and that led people to use two-way data bindings as an event bus."
- mycall 6y agoReminds me of people using exception handling to push message objects around (data).
- loopdeloop 6y ago> Today we know 2-way data binding is gimmicky and makes programs hard to debug. This is the reason React uses unidirectional data flow. It makes sense for simple apps that are mainly rendering and outputting information/data. Writing a React that handles even simple forms is however a trip back to the early days of web, where you gotta handle your own DOM events. I'm unclear when repeating the same DOM handlers all over the place became "easier to debug"
- a-priori 6y agoThat’s because React isn’t a form library, it’s a rendering library. People have built form libraries on top of it. Here’s one I’ve used and contributed to that builds two-way binding for form state in React: https://github.com/Shopify/quilt/blob/master/packages/react-form/README.md https://github.com/Shopify/quilt/blob/master/packages/react-...
- earthboundkid 6y agoOkay, but if React isn't going to handle forms for me, why am I wasting 100KB on it?
- a-priori 6y agoIf you're going to use a "if React isn't going to handle X for me, why am I wasting 100KB on it?" argument, then it wouldn't be 100KB for very long, now would it?
- earthboundkid 6y agoVue is smaller than React and does not need a form library.
- seumars 6y agoClassic webdev reply. Hey how should I properly work with data binding and forms in react? npm install react-proper-use-of-binding-and-forms-duhhh!
- sergiotapia 6y ago>Today we know 2-way data binding is gimmicky and makes programs hard to debug. This is the reason React uses unidirectional data flow. Uh no we don't. I've spoken to a lot of engineers who curse redux and the entire ecosystem around it. The reality is, 99% of apps don't need that kind of craziness. "time travel debugging" is a meme. I'm tired of it being highlighted as some insane victory. Over what exactly?
- deleted 6y ago[deleted]
- fuzzy2 6y agoPrevious poster wasn't talking about Redux though? Just React.
- ncallaway 6y agoThis is super confusing to me, because you're talking about your dislike of redux, when it wasn't brought up or mentioned?
- sergiotapia 6y agoAre you really super confused, or just pretending?
- ncallaway 6y agoI was confused. The reply wasn't really responding to the parent comment.
- earthboundkid 6y agoBut it was all right, everything was all right, the struggle was finished. He had won the victory over himself. He loved Big JS Bundles.
- seumars 6y agoIn Back to the Future — I can't remember which — Doc says at some point: Why are things so heavy in the future? Is there a problem with the Earth’s gravitational pull? If you told me he was talking about websites I'd believe ya
- somehnguy 6y agoTotally agree. I occasionally work on family member's Windows PCs and hate it every time. Everything is huge, I can't tell what is supposed to be an actionable element and what isn't, and its just subjectively ugly. Information density took a huge hit in the later Windows versions and I find it incredibly frustrating to use. The first thing I always have to do is figure out how to open the old version of control panel so I can actually accomplish something. Glad to know I'm not alone in these thoughts, thought maybe I was just being stubborn in adopting the new style.
- deleted 6y ago[deleted]
- delusional 6y agoI think Flat UI can look absolutely awesome, the problem for Windows is that Microsoft hasn't done it well. I don't know what it is exactly, but their new UIs look bloated, yet barren. It feels like there's a lot of noise, yet no functionality. It's certainly not helped with the serious UI layering MS has been doing for the last decade (take all the basic functionality, create a new UI for that, create a link that opens a dialogue for the old functionality). Nowadays you have to enter 4 dialogues to access anything slightly advanced in outlook.
- asdff 6y agoIt feels like it was designed with shapes in powerpoint
- noisem4ker 6y agoAccording to an anonymous insider, in fact it was: https://news.ycombinator.com/item?id=11387759 https://news.ycombinator.com/item?id=11387759
- flowerlad 6y ago> I think Flat UI can look absolutely awesome Can you show me some "absolutely awesome" examples of Flat UI? Our sense of beauty and aesthetics comes from the physical world, which contains gradients, shadows, dimensions and so on. Simple geometric shapes can be elegant, but I haven't seen examples of Flat UI that is awesome as well as doesn't suffer from usability issues.
- owenfi 6y agoNot op, and don’t generally love flat, but here is one that I think qualifies: https://apps.apple.com/us/app/clear-todos/id493136154 https://apps.apple.com/us/app/clear-todos/id493136154
- rubber_duck 6y agoScreen with blue todos is using white text on gradually lighter background in the end the contrast is terrible IMO. Also the gradient looks tacky and pointless
- duluca 6y agoFor the record with Angular 2+ two-way binding is greatly deemphasized and not the default behavior. Everyone collectively learned that it’s not great for performance to do thousands of dirty checks a second. React definitely showed the way here. Nowadays you can implement the flux pattern with Angular using NgRx, but if you’re creating simpler things the binding concept is more intuitive. With Angular 9 you can breakpoint debug your template as well, so tooling is definitely catching up here.
- kbumsik 6y ago> If your native app is not going to look or feel any different than an app built using Web technologies why limit your customer base to Windows users? BTW, It specifically mentions that WinUI supports React Native for Windows. https://microsoft.github.io/react-native-windows/ https://microsoft.github.io/react-native-windows/
- stjohnswarts 6y agoWhy is it necessary to be able to distinguish windows apps from web apps? That's just silly.
- uhryks 6y ago"Silly" is a strong word. I imagine one of the points would be that a native app has direct access to your filesystem so you'd rather have users be cautious with it? But I agree that having in native apps the UI patterns people are used to seeing in webapps is simpler for the majority of users.
- Kipters 6y ago> Another issue from a technical pov is that XAML, MVVM and 2-way data binding are outdated. UWP XAML emphasizes OneTime binding more than OneWay/TwoWay when you use the new static bindings (using x:Bind rather than Binding), it's been a source of frustration for some people coming from WPF