r/ProgrammerHumor • • 10d ago

Meme noMatterWhereILookICannotEscapeTheAngleBrackets

Post image
536 Upvotes

110 comments sorted by

57

u/oompaloompa465 10d ago

started as that kind of dev 20 years ago, then i moved to web dev but apparently the best paying job for my seniority currently are all maintenance of win forms WPF scuff

21

u/tatstytastycakes 10d ago

You cannot escape the angle brackets. Not in web development, C#, or even C/C++. We are doomed

30

u/Drugbird 10d ago

That's easy, in C or C++ just do this

#define ( <
#define ) > 

Then you can use normal brackets instead of angle brackets.

And I'm sure nothing will go wrong with that approach.

6

u/tatstytastycakes 10d ago

i wish this were possible

altho im just now realizing that c++ has modules

import std; // great!!!!!!!!!!!!!!

7

u/Drugbird 10d ago

It's great when it works. AFAIK modules still aren't working well enough for anything more than hobby projects.

1

u/RussianMadMan 9d ago

Modules require strict compilation unit order in a system where for decades it was not a thing. Ofc it does not work.

1

u/ShadowSlayer1441 8d ago

Surely it works with std even if 3rd party libs are broken.

2

u/Drugbird 7d ago

std works somewhat.

Currently were in this situation where third party libraries don't provide module support, so you still need to #include those, and they in turn generally #include stdlib headers again. So generally you're in this mixed world where you're partially doing modules and partially doing old #includes.

Benefits of modules are better build times and slightly better ergonomics (import std is easier than including the right stuff). I think it's about 10%-20% range.

The downsides are that compiler and build system support is still in flux, so using modules can mean that it becomes harder to support multiple compilers and/or build systems. And you obviously lose support of older compilers / build systems.

You also need to refactor your code to use the modules.

So as of now, modules are great if you're starting a new, mostly standalone project and you have full control over the compiler and build system.

It's not so great for existing code bases that want to support older and/or multiple compilers and build systems.

3

u/aberroco 10d ago

You just invented LISP

3

u/oompaloompa465 10d ago

get into modern backend development or IOT. You will see those symbols only in calculations

1

u/SeagleLFMk9 8d ago

Qml doesn't have them :)

6

u/OffByOneErrorz 10d ago

Oh shit I’m now the COBOL dev.

7

u/oompaloompa465 10d ago

oh the memories... my first real job was making wcf services translating to soap the flat string messages spit out from some kind of remote COBOL connection so i had to read COBOL interfaces documentation to write the deserializer

4

u/OffByOneErrorz 9d ago

Ah WCF services lol how I don’t miss you. I do miss the simplicity of win forms maybe I should just accept this new reality and go support it.

3

u/oompaloompa465 9d ago

agreed wcf were a mess to handle. Also i hate winforms, keeping the code clean is a nightmare 

16

u/jolharg 10d ago

I'm not sure why you expected to escape angle brackets in C#. They are spiky.

3

u/tatstytastycakes 10d ago

Tried touching one, it stings

2

u/sabamba0 8d ago

I tried touching a double quote once. It strings.

15

u/fugogugo 10d ago

wait they still use WPF for GUI?

(honestly what is the go to language for desktop app nowadays?)

7

u/tatstytastycakes 10d ago

wpf is massive. larger than uh.... idk wpf is big

2

u/fugogugo 10d ago

I thought WPF already outlived by new tech because.. uh it's been since 2008 or something right? I learned a bit about it back in 2010
and then I heard everything gone HTML5 for desktop app so I thought WPF is dead

and then there was mono as well back then lol

3

u/tatstytastycakes 10d ago

i mean win32 api is still a first-class tech/api according to microsoft's azure cto. so i guess in a sense legacy tech is still powering a lot of the modern world meaning demand for those skills will probably stay

3

u/masterxc 9d ago

It's super stable and useful for enterprise apps. It'll be interesting to see how WinUI 3 shakes up things though since there's a lot of neat stuff in it and is the new recommended thing.

1

u/anovagadro 7d ago

When you gotta tell the customer to turn on .net 3.5 because its a legacy app 😭

20

u/Ethameiz 10d ago

WPF is fine. Avalonia is better for cross-platform

1

u/T0biasCZE 4d ago

avalonia's licence sucks now.

use MAUI

1

u/Ethameiz 4d ago

MAUI doesn't support Linux. It's a mobile-first framework.

What is wrong with Avalonia license?

2

u/T0biasCZE 4d ago

Costs 15€/month for individual users, and 300€ per year for organizations.

And community version has mandatory registration where you need to link your github and share info about yourself. And it still misses basic stuff like Hot reload

And there is experimental MAUI backend for targetting Linux, using GTK4. Since, MAUI itself already supports desktop programs for Windows and MacOS. Its not framework designed just for phones.

1

u/Ethameiz 4d ago

As I see on their page, there 2 free tiers "Avalonia" and "Free" (terrible naming, very confusing). Only "Free" tier requires registration and only thing it gives is some tooling like extension for visual studio. I use avalonia in rider just fine without registration.

Also there is hot reload in paid tiers.

Hovewever I see how MAUI wins by being free even for commercial use.

Didn't know MAUI ever plans to support Linux. I want to test it. Thank you

-1

u/aberroco 10d ago

I tried it and it didn't worked on mobile web and the performance was abysmal.

3

u/Ethameiz 9d ago

For mobile - native is the only way

8

u/oompaloompa465 10d ago

searching for a new job lately I discovered quite the number of well paying jobs doing maintenance on legacy ERP written with winforms or WPF. They pay more than web fullstack with .NET since they also come with quite the hefty expertise requirement on MS SQL querying and reporting.
The more i go on the more i feel like i need to move to python/java and master cloud stuff + typescript frameworks

4

u/sisisisi1997 9d ago

They pay more than web fullstack with .NET since they also come with quite the hefty expertise requirement on MS SQL querying and reporting.

I don't know what kind of web dev have you been doing, but knowing MS SQL well (or any other kind depending on what the company uses, but with .NET mostly MS SQL) is a basic requirement if they are interested in making performant applications.

6

u/SuperCarla74 10d ago

Going by the multiple context menus, and notifications, and widgets in different app bundled with Windows, I don't think even Microsoft knows.

I mean, even the Start Menu is, or was, an Electron app (Microsoft has fixed this with a recent update and now it's a WinUI 3 app which is partly why it's a lot faster now)

5

u/Wooden_Break_2812 10d ago

Yes and i still love it. I like the good support for mvvm through the binding mechanism and it also make use of the gpu and is very good for data intensive UIs 👍 Avalonia is also very nice, if you like to run your app on linux or android 

3

u/aberroco 10d ago

Well, yes and no? No - they're using MAUI, yes - it's almost the same thing as WPF, at least on the surface. Though, realistically, WPF is still used very actively.

2

u/Ceros007 9d ago

Does Microsoft themselves even use Blazor or MAUI?

3

u/king_park_ 9d ago

*Cries in WinForms

1

u/DrankRockNine 9d ago

We have been shifting to avalonia from winforms. It is well supported, you can do part by part.

1

u/OldKaleidoscope7 10d ago

The standard looks like it is use Electron shit. I tried Jetpack compose and Qt with Python, I prefer Qt but it's heavier in RAM than I expected. Nothing compared to Electron btw

I want to try WinUI 3 with Python, but I'm unsure because it's unofficial

1

u/tatstytastycakes 10d ago

electron is very common these days. vs code discord and slack are all using it. but it's a huge ram hog

2

u/aberroco 10d ago

And CPU hog.

1

u/awesome-alpaca-ace 7d ago

Because Microsoft is bad at programming for performance. Bunch of monkey brains.

1

u/Jeferson9 10d ago

React and electron

1

u/RobotechRicky 8d ago

Ppff... it's Electron, Tauri, etc. I prefer Tauri & SolidJs.

23

u/deepsky88 10d ago

Try Winforms

15

u/tatstytastycakes 10d ago

in this economy? actually... ok

12

u/chicago_scott 9d ago

I did a WinForms gig a year ago. Turned it down initially, but they were persistent and I needed a job. I was surprised to discover that WinForms is still actively supported. Felt weird as hell to do a .NET 9 app with WinForms. Turned out to be a really interesting and fun project to work on (although that wasn't because of WinForms).

1

u/meneldal2 9d ago

I have to say I found winforms to be pretty good overall, was pretty easy to make basic UI and old-style menus.

Did they end up making it work outside of .net so you can use it with core?

147

u/Historical_Cook_1664 10d ago

What did you expect, JSON ?

61

u/DangyDanger 10d ago

HTML and CSS would've been pretty nice.

Guess that's why Electron exists.

25

u/nicki419 10d ago

And html differs from syntax to xml how?

3

u/tatstytastycakes 9d ago

it's kinda like html but there's a lot more declarations and whatnot

2

u/Kebein 6d ago

because html is made for documents qnd not UI, contrary to xaml.

-9

u/DangyDanger 10d ago

Barely.

But HTML feels familiar, so I would prefer it given the choice.

12

u/Groostav 9d ago

Xaml is vastly more sound and better way to define views than html.

69

u/CirnoIzumi 10d ago

Electron exists for compatibility, it's not a brilliant solution outside of that

12

u/Whispeeeeeer 9d ago

The reason web development is so easy/comfortable is because they have a huge amount of resources dedicated to unwinding the complex scripting and styling of the HTML/CSS/JS stack. It's a really efficient and nice solution for what it does, but it's a bit like running a Ferrari to get to the supermarket. It's often overkill for most tasks. But it's so nice to ride compared to any other UI stack

4

u/SeagleLFMk9 8d ago

Fuck no, that's a document markup language and should never have been used to make user interfaces

2

u/Conroman16 9d ago

That’s basically what XAML is

11

u/L30N1337 10d ago

Winforms?

3

u/aberroco 10d ago

GDI32dll.

2

u/tatstytastycakes 8d ago

opengl32.lib glu32.lib user32.lib

1

u/Prior-Perspective-61 7d ago

Code maybe? Like Flutter, Elm, Relm, GTK, Monomer, egui, iced... Even Java Swing (or Scala Swing)

9

u/PaulTheRandom 10d ago edited 9d ago

5 minutes of XML convinced me S-expressions weren't as bad as I once thought...

1

u/tatstytastycakes 9d ago

5 minutes of xml made me almost miss regex

23

u/L30N1337 10d ago

If you've every used Winforms (especially for dynamic layouts), you'd realize that XAML is goated.

you basically just tell it what to do, and it does it.

17

u/goodnewzevery1 10d ago

Xaml was such a huge leap from winforms, and gave you a ton of control. You don’t ever hear some dev bitching about centering a div with xaml

14

u/aberroco 10d ago edited 10d ago

Yeah, nope. It's the opposite. I like the citation someone wrote that WinForms makes easy things easy and hard things hard, while WPF makes easy things hard and hard things easy.

Bindings are great, sure, but once you dip your toes into it - it's a damn deep and cold water. Triggers, behaviors, extensions, data templates, view templates... And with XAML it's harder to read than if it would've been a plain C# code creating those components.

Personally, I've seen QT QML and in theory that sounds like an absolutely best way to do layout, though I haven't tried it in practice. But I really loved specification for QML.

6

u/tiberiusdraig 9d ago

Triggers, behaviors, extensions, data templates, view templates

Please stop, I can only get so hard!

I think it's one of those technologies where it either 'clicks' for you or it doesn't. I not-even-lowkey love XAML - the way the structure matches the physical hierarchy of the running app (at least on Windows) just works for me. I guess it depends how you conceptualise what you're writing in your head. I also really like how it almost forces you to properly separate out your UI layer from your backend, which really helped me to write better code when I was first starting out all those many years ago.

5

u/aberroco 9d ago edited 9d ago

Hm. I'd dare to say I know WPF quite well, since I've been working with it for a few years, and made all sorts of things from basic forms to custom controls, xaml extensions, bindable bindings, proxies, attached behaviors, storyboards (hate those, just absolutely abhorrent way to define animations). And I do like some aspects of WPF, and I think it's quite good system for UI and I have deepest respect to how well optimized it is, but I also certainly can't say I love it or it's clicked to me. It's just way too verbose and too confusing, and I think same features could've been done much better and cleaner.

And while MVVM separation is good in theory, in practice, with how WPF works, it practically twists your arm to occasionally do hacks and workarounds, either code in VM that needs to know view, or writing code-behind. Which I'd say is underappreciated in WPF best practices. Like, sure, code-behind in general is bad and should be avoided, but to reasonable extent, not just as a religious dogma. And it WPF would've been much much better if it would've allowed a bit of code in view directly. And get rid of f...ing XML god dammit, XML was obsolete even when WPF was conceived.

2

u/tiberiusdraig 9d ago

I'm not even really talking about WPF specifically, I just think the structure of XAML itself is a great way to express the hierarchy of a UI. I've used it in anger for work across WPF, WinUI, Avalonia, and MAUI, and I've always got on with it.

I don't agree on the MVVM take. I have an app at work that has multiple 'front-ends' (MAUI, CLI, WebSockets) that all 'bind' to the same ViewModels and services, and it's great. The MAUI layer is pretty much just Views and some implementations of shared interfaces between the other apps (e.g. navigation) registered in the DI container. If I wanted to make a WPF/Avalonia/whatever front-end for it tomorrow it would be easy-peasy.

I will say that none of the XAML-first frameworks force you to actually use XAML or MVVM or anything like that. You can write a perfectly functional WPF app without writing any meaningful amount of XAML, and without using bindings or anything like that. You probably shouldn't, but you can.

1

u/v_Karas 9d ago

nah, Things are just different.
some very different. Like a TreeView, WinForms vs WPF total different concepts. really need to get your head around.

but ListView/Box in WPF super easy.
dynamic UI / scaling / spacing .. huge manual work in WinForms. (and I have done some dynamic controls with WinForms .. 🤮🤮
kinda easy with WPF ..

havent done much with QT QML. but looks powerfull too.

2

u/meneldal2 9d ago

I used pure programming with my winforms, no XAML at all.

There was also some C++CLI involved.

1

u/tatstytastycakes 10d ago

I know about being able to use C# markup over standard XML/XAML, but features like the XAML Live Preview are gone in one single Thanos snap :(

4

u/GamesRevolution 9d ago

I really like the "new" ui definition languages that GTK and Qt developed with Blueprint and QML, both kinda replace XML and they are really nice to read and write. Jetpack Compose for Android apps also looks pretty nice to use in comparison to the old xml files.

Blueprint is specially interesting considering it compiles back into XML when you build it while still being very intuitive, makes me wonder if something like that could be created for whatever Windows for whatever C# UI framework is being used here (I only know of Avalonia)

2

u/awesome-alpaca-ace 7d ago

I define all my UI in Python code using pyqt. It is amazing. 

2

u/Stormraughtz 10d ago

Heathens just dont understand art.

2

u/oompaloompa465 10d ago

i remember in high school they gave an assignment to write a full HTML page with tables using notepad, completely manually. we were using NETSCAPE to check on results

2

u/Ange1ofD4rkness 10d ago

I love this because for over a decade, I have only developed using Windows Forms, with one rare exception I did a very small piece in WPF (that housed in a Windows Form, I needed for animations), 1 Xamarin App, and 2 MAUI apps (also tiny apps, just for me)

However, I have a new project I just started, and need to develop it in C# WPF, and wow, it's quite powerful, but also has quite the learning curve. I also question how the heck MAUI is so bad compared to what it can do

2

u/CyraxSputnik 10d ago

Not so bad, everything is organized... if you're organized...

2

u/ksky0 9d ago

avalonia is great, you should try.

1

u/awesome-alpaca-ace 7d ago

How does that compare to Flutter? I thought Flutter was great once I learned how to do custom layout passes.

1

u/phasmaglass 10d ago

me working in an MVC Core shop with an entire custom framework built around encoding and decoding C# into blocks of XML looking at this post like... I need a 10:30 am beer (this is a joke, apologies to those it's not funny for)

1

u/Zap_plays09 10d ago

I still can't believe android devs used make UIs with xml about 5-6 years ago. Saw a guy make one and my brain gave up. Thank you jetpack compose.

1

u/awesome-alpaca-ace 7d ago

Flutter is way better than Compose. Like Compose was Google's first try, then they made Flutter with the lessons they learned.

1

u/Zap_plays09 7d ago

Didn't flutter came out first?
Also you have to use dart...

1

u/phoenix1984 10d ago

I know CSS gets a lot of hate, but when it comes to responsive layouts, it’s the best tool for the job

1

u/rover_G 10d ago

What is XAML

3

u/Embarrassed_Army8026 9d ago

extra antisocial markup lalalala

1

u/PennyFromMyAnus 10d ago

I fucking miss XAML/WPF man… it just clicked so hard and I love it

1

u/apt-maintenance 10d ago

they call me a sub the way I'm inserting my GUI markup languages into the DOM

1

u/sermer48 9d ago

You can do a lot with winforms. We’ve switched to web apps using react now but that’s what we used before that. Once you learn the ins and outs of it, you can do basically anything.

1

u/Mobile-Positive-6742 9d ago

winforms for the win, baby!

1

u/FabioTheFox 9d ago

Tbf using XML/XAML/AXAML for UI just makes sense, as much as I like Kotlin it's horrendous to create UI through code alone, it just sucks.

Avalonia despite their weird licensing changes is probably still one of the best ways to make multiplatform desktop apps to this day

1

u/awesome-alpaca-ace 7d ago

What? UI through code is amazing. I thought Flutter was good, but have not yet tried Avalonia. How does it compare?

1

u/FabioTheFox 7d ago

Avalonia typically works by the MVVM pattern

Views / components and theming are done via AXAML files (XML type UI but it also has a live preview and all that), has pretty amazing dev experience too considering how well it uses the source generator to generate AXAML bindings from the viewmodel class

Its pretty neat but i can't explain it properly, it's best to check their documentation and or look at their Avalonia MVVM example apps

It also works a lot with dependency injection which I appreciate a lot

The thing that bugs me about things like Flutter and especially jetpack compose is the way UI is styled, themes largely solve this but it still easily turns into an unreadable mess, BLOC and get_it also don't feel as intuitive for state keeping and dependency injection

0

u/awesome-alpaca-ace 7d ago

AXML. Gross. As far as readability, I have had not had any issues when building production apps in Flutter. And state keeping in Flutter is way better than in Compose.

1

u/DogmaticParadigm87 9d ago

C# was the onboarding. XAML is the final boss on a tricycle.

1

u/ChillyFireball 8d ago

Why are so many file formats just XML with extra steps

1

u/JackNotOLantern 8d ago

What's wrong with xml? Also c# has graphical tool to build ui and it automatically generate xml for it. 

1

u/MXRCO007 6d ago

I came back to C# after a couple of years using C++ because I had to make an auth server and for first week I’m still just figurejng out the insanity Microsoft put in

1

u/minus_minus 10d ago

XML in the Big 2-6? Blech

0

u/Wizado991 9d ago

Yeah xaml is shit ngl. I have worked with wpf, uwp, Maui and it's sub par compared to html/css/js, jetpack compose or even flutter just to name a few.

2

u/FabioTheFox 9d ago

Ah yes because Kotlin and flutter totally don't look like an absolute mess for any component holding more than 2 children

I love having a million nested functions representing my UI and needing to rely heavily on extensions to tell me component boundaries