Although your current role wouldn’t seem very senior at a large organizational, “senior“ is a relative term and at this company it seems like you are the engineer with ownership responsibilities over the end-to-end software development of a production system. So it might still be reasonable to use a senior title if there are other benefits
Good point and I agree with the downsides. Giving admins more granular ways of hiding content sounds healthy.
There’s also the important distinction between admins finding opinions on the other instance “disagreeable” and muting vs. illegal content in the instance server’s jurisdiction and those of the admins. Defederating the whole instance does seem harsh if the problem is within specific communities only and doesn’t deal with illegal content.
Feels odd for admins be able to prevent users from seeing content
My understanding is those admins aren't just allowing users to view it but also allowing copies of the federated data to be stored on the server those admins are responsible for, so for certain types of content it seems really important to be implemented in this way.
Sorry for the extraneous information about the ifdef. The important part was whether adding this extra check would fix the bug in the same way as deleting the original line did.
I can’t find where arg should be equals to 0… steady_state always call with arg <> 0
From what I could assume in the comments, this refers to the very first state in that steady-state (“first frame”) right when you have done 4H. Then it sets the current level to the appropriate turbo (set_level_and_therm_target).
Your bug would be that it never set the level to turbo because it never executed set_level_and_therm_target because ! arg evaluates to false.
Your bug fix was to delete the check, but that means that every instant it will keep trying to set the level to turbo instead of just setting it during the first frame and then maintaining the steady-state.
My potential fix was to add something so that the statement if (! arg) || (! channel_has_args(cfg.channel_mode) would evaluate to true during the first frame so it can then call set_level_and_therm_target exactly once.
@SammysHP@feddit.de (if you have a moment) does this seem close to the mark?
Speaking of testing locally - how do folks test code changes? Actually flash them to driver, or is there some kind of way of simulating the inputs and outputs? I’m guessing there isn’t an Anduril emulator.
I don’t own a multi-channel, but I did see something that looks interesting in the code (not familiar with the codebase and haven’t worked with C much):
Could be a red herring but the function channel_has_args looks kind of like it might be doing the same work as if(!arg) for single-channel. Again this could be totally wrong but IF that were the case, then I’d expect that adding to the if statement could potentially help catch this? Like
if (! arg) || (! channel_has_args(cfg.channel_mode) .
Also in following the code style the actual statement would also need to include an IFDEF for multi-channel-config but maybe not necessary for you test locally?
Imagine you need (or just want) to carry several flashlights for different use-cases: seeing far away, seeing nearby, lighting up your campsite with a warm glow, or emitting a specific color.
Multi-channel lights aim to consolidate multiple use-cases into a single flashlight. And although 2-channel lights are available, this might be the first 3-channel available from a flashlight maker who allows customers to customize their LED choices from the factory.
Aside: linking to Lemmy posts with federation doesn’t seem to be supported properly at the moment, unlike community links which keep you on your own instance, e.g. !flashlight@lemmy.world doesn’t transport me to a different Lemmy instance when using this account from programming.dev.
This is a great suggestion because it focuses directly on tracking the outcome (did the software work?) and it gives a fair chance to the folks who don’t want to test - maybe their code really is perfect!
Another similar metric I would add is the number of rollbacks of newly released code, if the CD system supports it using a method like canary or blue-green rollouts.
Focusing on code coverage (which doesn't distinguish between more and less important parts of the code) seems like the opposite of your very good (IMO) recommendation in another comment to focus on specific high-value use-cases.
From my experience it’s far easier to sell the need for specific tests if they are framed as “we need assurances that this component does not fail under conceivable usecases” and specially as “we were screwed by this bug and we need to be absolutely sure we don’t experience it ever again.”
Code coverage is an OK metric and I agree with tracking it, but I wouldn’t recommend making it a target. It might force developers to write tests, but it probably won’t convince them. And as a developer I hate feeling “forced” and prefer if at all possible to use consensus to decide on team practices.
One aspect that does work is framing the need for tests as assurance that specific invariants are verified and preserved
Agreed - this is the specific aspect which I hoped would be communicated by studying TDD a bit!
The team is afraid that making changes will be more difficult when tests exist, but TDD (or maybe a more specific concept like you mentioned) demonstrates that tests make future changes easier.
And I specifically advocated not to follow “write tests first”.
Name-dropping concepts actually contributes to loose credibility of any code quality effort, and works against you.
OK. If I were having an in-depth discussion with my team of fellow developers to convince them to start writing tests, I don’t think that’s name-dropping.
Same, I was surprised they had already put it on the main website as well.