AV Programming Sucks

In my previous post The AV Industry Needs to Open Up, I talked about two reasons why it is difficult to become an AV Programmer, proprietary hardware, and certifications. Today I am going to talk about the biggest reason there is a shortage of quality AV Programmers: sub-par tools.

For AV Programmers there are two main platforms, Crestron and AMX. There are other platforms, but to keep this article short I’ll be talking mostly about the Crestron and AMX platforms. Within the two platforms you have two options: proprietary languages created by the manufacturer, or a supported open language that can run on their hardware.

Let’s start with the proprietary languages. Crestron has SIMPL and SIMPL+, AMX has Netlinx. SIMPL isn’t so much of a programming language as it is a visual tool that lets you build logic for your processors. SIMPL can get some jobs done, but is often inadequate for complex jobs. Due to SIMPL’s nature as a visual language it is not compatible with version control software like Git or Subversion, and makes it difficult to work in teams.

SIMPL+ is a C-like language, NetLinx is a bit more Java-esque, but both are plagued with the same problems. Due to their proprietary nature the main source for support is on the developer support forums. It’s also nearly impossible to find any good 3rd party frameworks or tools. Contrast this to more open languages such as JavaScript or Python, where all of my problems can be solved with StackOverflow, or by the countless blogs written by kind strangers on the internet. If I need to accomplish something, there is probably a library to help me. Tools like npm or pip make installing 3rd party libraries a breeze.

You don’t have to use these proprietary languages though. Crestron supports C# via SIMPL Sharp, and AMX supports Java, two very open, very useful languages. Unfortunately for AV Programmers the implementations supported by the manufacturers are terribly outdated.

Crestron launched C# support with their 3-Series™ line of processors, the first of which was released in 2011. The problem with SIMPL Sharp is with the supported version of C#. You see, with SIMPL Sharp you’re locked to Visual Studio 2008, which means when SIMPL Sharp was released it was already obsolete, Visual Studio 2010 had already been out for a year. With Visual Studio 2008 you get to use C# version 3.0, the most recent version being 6.0. AV Programmers are missing out on some seriously great features: optional parameters, named arguments, async programming (which is super useful in AV), the Safe Navigation Operator, and more. This is ridiculous.

And then there’s Java with AMX, which is even worse. In order to use Java with AMX you need to purchase a copy of Cafe Duet, a set of extensions for the Eclipse Java IDE. The latest release of Cafe Duet was in 2005, 10 years ago. It runs on Eclipse 3.1.0 to 3.1.2, which are also 10 years old and absolutely terrible (I know from experience). When I write Java I use Intellij IDEA, which is arguably the best IDE on the market, if you’re an AMX programmer you don’t get to choose your IDE, your only choice is one that is 10 years old. This is ridiculous.

Even if that wasn’t so bad, you’re locked to Java 1.4, which is over 13 years old, and hasn’t been supported by Oracle since 2008. The feature gap between Java 1.4 and 1.8 is huge. Java 1.5 introduced enums and generics. Every Java project I have ever worked on has made liberal use of enums and generics. I didn’t even know that there was a version of Java without generics. Language features aren’t my only concern either, Java 1.6 was so notoriously insecure that Java applets are now disabled by default on all major browsers. Apple has repeatedly disabled Java on OS X. This is ridiculous.

You want to know why you can’t find any AV Programmers? Because no one wants to work in an environment where they’re given obsolete and proprietary tools, which are locked to expensive hardware, and can only be acquired by dealers. When I start a new project I get full control of my tech stack. I can experiment with new languages and new frameworks. With the current state of AV programming you get to work with tools that are decades old. Fresh college graduates don’t want to work with tools that were released years before they were even in high school, and they definitely don’t want to get a certification to do it either.

So how the hell did this happen? Well, I have a theory: AV Programmers don’t make the manufacturers any money, so they don’t want to spend the time or energy investing in building better tools. In a recent interview with Crestron’s CEO, Randy Klein, stated:

“We used to be a control system and touchpanel manufacturer – today, those account for only 10% of our total business.”

I’m certain the same is true for AMX, especially considering the companies they’ve acquired like AutoPatch and SVSI. The big players make their money selling hardware, and why shouldn’t they? Products like SVSI are great, Crestron’s video transports are particularly nice, and they both have many more product lines.

There are a few things manufacturers can do to show they care about the programming community. First they can open up their tools for anyone to use, regardless of certifications. Second they can open up the developer support forums, and encourage the community to post on other sites like StackOverflow. It would be amazing to see manufacturers create a process that allows the community to submit feature proposals, similar to Python’s PEP system. Creating an open atmosphere for developers to work in will inspire a great deal of innovation within the community.

Manufacturers don’t just have to stop with their tools and resources, they can open up their hardware as well. Manufacturers should open up the APIs on their hardware products such as matrix switchers and DSPs. If manufacturers really want to enable the community to innovate they would open up the operating systems for their control systems, allowing people to run whatever software they want on them, i.e. more programming languages such as JavaScript, Python, Scala, or Go.

If the AV industry wants to attract new high quality talent it needs to treat programmers with respect, not neglect. Programmers want and need better tools. Better tools will attract better developers, which in turn will spark greater levels of innovation in this industry. With better tools and more innovation everyone wins, the customers, the manufacturers, and the developers.