Hats Off to JUCE

I actually like programming in C++ again thanks to JUCE - I can think up a non-trivial feature and in almost every case have it working in a matter of hours instead of days. I suspect I’m breaking some law or other as things that are fun are usually illegal. The JUCE Api’s are masterpieces of design.

Delighted to be of service!

I should have seconded this when it first flew by. I’ve always enjoyed coding in C++, even back when it was a C pre-processor. But I have always done a ton of system level and embedded programming. I never really understood why C++ did not displace C in this area. Probably because people assumed that they should fundamentally change the way they code instead of simply using C++ to more clearly and cleanly replace what they were already creating themselves in C. That is, people got bigger, slower, crappier code in C++ because of bigger, slower, crappier designs.

Aside from a generic hat tip for the breadth and scope of the work, I’d give two specific hat tips to Juce.

First, it’s a clear and relatively simple UI model. One of the big hooplas that all the NextStep folks used to tout was the relative complexity of getting something basic up and running in a graphical UI. Their solution was to use an inherently weak link, loosely typed language (Objective C) and create an authoring tool for linkages and easy previsualization and placement.

It’s subjective, but I would say that Juce is a better execution of those same concepts. The API at the top is cleaner and clearer. I know native iOS and Cocoa well. I threw together an iPhone utility in a couple of days. I do not know Juce well, but I duplicated that utility in about the same amount of time. Not only did it run with only minor tweaking on Android, I ended up implementing some stuff that I had blown off in the original for time and headache reasons. I also found that moving between UI tool and no UI tool native coding to be seamless, something, say, a NIB file is not.

Second, Juce is extremely legible. I ended up extending the socket classes and putting in some additional appication events specifically for mobile specific cases (suspend, resume, etc.) It was surprisingly easy to find what to change and to make changes that fit the existing classes, etc. without anything else exploding. It isn’t just that the code is clearly written when a lot of code isn’t. It is that Juce has maintained legibility over a relatively long life cycle. To me that reflects both a sound original design and the discipline to see changes through when the design must be modified.

So, a big second on the kudo!

Thanks very much!

It’s particularly nice when people complement the code’s legibility, because that’s always been one of my big priorites. We all know what it’s like when you’re reading through someone else’s crappy code, and you have that under-your-breath monologue of swearing at them and "WTF"ing and calling them a moron… Well, I’d hate to think that there were hundreds of people out there reading my code and having that reaction, so I try to do my best to produce work that’s aesthetically pleasing!