Pads - 6.7 and 7.0

Hello, I’m a bit confused about one point. Pads appear to work differently in versions 6.7 and 7.0. Could you please take a look at the screenshots below?

Pads in 6.7 - works nice and well

and Pads in 7.0 - uh broken …

What is it I am missing?

I hear you. Warnings like these can feel off-putting.
It suggests that you did something wrong, while you didn’t: everything works!
So why color it orange?

There are at least 3 ways on how we can discuss this topic.

  • the exact warning you are facing here
  • warnings in general
    • their visual appearance
    • patching styles and warnings that actually help/guide you rather than distract you

Let’s maybe start with warnings in general.
Other than errors, warnings are there to tell you that there might be something to double-check. They are not errors, but hints.
Many other systems/languages have them.

Typically, there is a place where all errors and warnings get collected and often enough warnings are so abundant that you typically hide them.
grafik

The same can be done in vvvv.


And yes also our warnings are abundant.

The warnings themselves also show up in the tooltip. In your case when you hover the pad.
grafik
And they leave some visual clue on the element itself.
grafik

Other systems also have those tooltips and those visual clues.
grafik
It’s interesting though that in Visual Studio they chose to swap orange for green and these days warnings don’t feel so much off-putting anymore as the color is friendlier to your eye.

I think in general, we should keep warnings, even if they get ignored by users. I often ignore them when writing code, and so who am I to argue you should pay attention to them?

But you could. And sometimes they are of help - even those on links.

So, in general why do we invest in showing warnings?
We want to be of help when your patch is misbehaving, and you are trying to figure out where to look at and where to even start debugging.
Warnings can be ignored when everything is working and can be of help if something is not working.

The particular warning might be a bit verbose, but sometimes there are ways to get rid of them AND make the patch easier to read.

This is a made-up example. Of course, there are often “false positives” where you’d rather not want to see a warning as it only distracts you.

Now the question is how much we should invest into the compiler in order to make the warnings only show up if they are very likely to lead to a problem or if that is a waste of energy.

We could also invest into a system that allows to enable or disable a certain class of warnings, that fits the taste of a user and other systems did that. But I fear it won’t help much as with all settings it’s all about the right defaults and nobody that I know of wants to adjust which warnings to show and which not.

Having said all this:
Yes, I can see that the particular warning is a bit verbose. It says that in the first frame there might be a value that you don’t expect as you never have written to that pad.

This can be helpful or not.
I was actually introducing that warning as I was hunting down an error and was kind of desperate. I just couldn’t find the error in my beautiful patch. After finally understanding my mistake I introduced this warning to help others with debugging their patches.

So now what?

  • make them green?
  • make you opt-out?
  • remove the particular warning?
  • force people to read warning tooltips? ;)
  • help people to get rid of warnings with better tutorials?
  • make the particular warning only show up in certain cases?

TLDR: initialize your pad by writing to it on create or ignore the warning.

4 Likes

Note that your patch reads the pad before it writes to it. Resulting in a first frame that behaves differently from all other frames.

In your particular example you could just assign one link to Create resulting in a well-behaving first Update call.
It would also make the warning disappear.

This is a problem for people who migrate from the old version to the new one. I must say that a couple of times this reminder that the pad needs to be initialised helped me find a tricky bug.

1 Like

Touches the topic how to work with pads. Should they be used as local send & receive.

Thanks a lot for this. I wasn’t aware that this changed in 7.0, so if my understanding is correct, the setup below works and will not trigger warning messages.

I really appreciate you taking the time to explain the intricacies of finding the right balance between well-intended and useful warnings and messages that might cause unnecessary panic. When there are too many warnings, they can start to lose their meaning.

Unfortunately, I’m probably of limited help here, as my knowledge of vvvv is still too small to judge where that line should be. I was mainly confused by the warning, the new channels, the channel browser, and so on. I thought the intention might have been to gently discourage the use of pads — but of course, different people can read these things differently.

In any case, I’m happy that I now have a solution to my problem and can continue working.

Thank you very much.

2 Likes