Writing “Correct” Programs

Lately, it feels like I’ve had a problem making sure my programs are “correct.” I’m hoping if I write about it, I’ll see a pattern that I can fix. It’s frustrating for everyone when bugs slip into commissioned systems, and it reflects badly on custom programming as a whole when these errors aren’t caught before the space is in use. After all, we don’t want to be the cause of the house burning down.

Continue reading “Writing “Correct” Programs”

Programming on the Road

I’ve been traveling for work recently and kicking myself for not bringing an RMC3 along. It’s not that I enjoy Crestron programming every waking minute of the day. A lot of times, I try to test programming out before I ship it off to someone as a “fix.” As control system programmers, we’re in a different boat from others where we can’t run our programs on our laptops to test. Specifically, if we’re writing SIMPL code, we have to have physical hardware accessible to us. It would be great to have a SIMPL Simulator for testing logic, but that’s not something Crestron provides and no way am I going to try reverse-engineering their LPZ file format (that’s specifically against the dealer agreement).

So what options do we have for a programmer on the road?

Continue reading “Programming on the Road”

ATEM Mini Pro

Blackmagic Design makes some cool production switchers that are reasonably priced and work great. They even distribute an SDK to control them from Windows or Mac programs. Controlling from Crestron is tougher, but not impossible. Some third-party products have sprung up to make it easier, too. In this post, I’m going to walk through how I wrote a module to perform a couple of functions on the ATEM Mini Pro.

Continue reading “ATEM Mini Pro”

VirtualBox Headless

Collected from the wonderful documentation at https://www.virtualbox.org/manual/ch07.html.

To see which VMs are available, type:

$ VBoxManage list vms
"dev-site" {2e39d6cc-c307-44f6-b73e-a6f95e0f17b0}

To only see running VMs, type:

$ VBoxManage list runningvms

And to start it:

$ VBoxManage startvm "dev-site" --type headless
Waiting for VM "dev-site" to power on...
VM "dev-site" has been successfully started.

HTML5 Cleanup

The last post took me way too long to write (like an entire month), and I think it’s the format of trying to step through every single change, every single time that’s slowing me down. We’re going to be moving into program sizes where that just isn’t going to work. But before we make that jump, I want to do some clean-up on our last program, the Huddle Room.

Continue reading “HTML5 Cleanup”

SIMPL Tricks: 4-series

If you’re starting to get into 4-series projects but you don’t have actual hardware to test with you can load SIMPL programs targeted for 4-series processors to a 3-series. I’d heard the reverse was true: a 3-series programs should run unmodified on a 4-series. But it looks like for testing purposes, you can also run 4-series SIMPL programs on a 3-series.

Of course, your program would need to be written such that it runs on a 3-series and a 4-series. This is different from the 2-series to 3-series transition where the architectures must have been wildly different.

HTML5 + 4-series

We’ve already run into a couple things we need to be mindful of when using HTML5 and 4-series processors (see HTML5 XPanel for details about licensing and authentication). In this post, my goal is to break away from 3-series sandboxes and SIMPL Windows, so that means we’re moving into the realm of C# and Visual Studio 2019.

Continue reading “HTML5 + 4-series”

HTML5 + JS

In this post, we’re going to greatly simplify how we create touchpanel layouts: we’re going to ditch the Contract Editor and most of the CH5 components. I do think these tools have value in the right hands, but I want to explore going my own direction. We might reinvent some of their features, but I think it will pay off from the learning aspect. And we’ll know how our program works, inside and out.

Continue reading “HTML5 + JS”