← Back to context

Comment by jlarocco

6 days ago

At work we use C#, .Net, and WPF. I've only used it at this company, and I can't say for sure if my dislikes are with WPF, or how our codebase is using it. Overall it's not terrible, except for being proprietary and Windows only.

Outside of work, I'm out in left field using Common Lisp for most of my projects, so I'm not sure how helfpul this is, but...

In the past, I used Qt4 because there was an amazing Common Lisp binding and it worked well on Linux, FreeBSD and OSX. It's increasingly hard to use Qt4 any more, though, and changes in the Qt project made the technique used by the Qt4 bindings impractical for Qt5 or Qt6 - at least that was my understanding when I looked into it.

For newer things I've tried LTK but don't really like the looks of it and I wouldn't say it's "modern". It seems to work across platform well enough, though, and for simple stuff it's okay.

More often than not I'm using a combination of the Slime tools in Emacs in combination with an GLFW/OpenGL window. Often I'll use the inspector to display data and make changes that show up in an OpenGL window, or run some commands in the REPL and pop up an image in an external viewer or load something in a browser. It only works for certain types of applications, and I won't even pretend it's practical for end users, but it works pretty well, and it's flexible as a developer.

I'm curious to see what other people say. It's been a while since I madea full blown GUI application.

There are defiantly better and worse ways to use WPF. Personally I dislike it when data binding is done in XAML, because there is no compile time error if you rename a property on the C# side.

When I wrote a WPF app at my last job, I write a micro MVVM framework. Basically just an implement ion of INotifyPropertyChanged on the model side and some extension methods to bind the properties to UI elements. It was as strongly typed as possible in WPF.

> changes in the Qt project made the technique used by the Qt4 bindings impractical for Qt5 or Qt6 - at least that was my understanding when I looked into it.

It was hard to do reasonably with qt4 already. The best solution would be to support the C++ ABI natively, but that's never going to happen.