Feedback wanted Tileable effects #424
Replies: 9 comments 10 replies
-
Before I start with my response proper, I want to state first that as the commit and PR history on this project will confirm, coding the actual visual side of the project (i.e. the effects that are actually being rendered on strips or matrices) is not my forte. One way to put it is that I'm "better at the back-end"; JSON persistence, REST API, web server in general, tooling, CI, etc. The effects that are now in the set have basically been written by @davepl, and a major contribution of new effects by @robertlipe is on the way - I expect that to be merged soon. As such, I'm certainly also interested in their opinion. With that disclaimer out of the way, I think that in terms of an architectural concept it's certainly an interesting idea. At the same time, I have some difficulty projecting it onto "real-life" scenarios. Meaning that I'm not sure how many visually pleasing (and performant!) end results could be composed from smaller component parts. Maybe you could elaborate a little bit on scenarios/"composed effects" you have in mind? What I like very much is your intention to "take it all the way", including REST endpoints, persistence and the front-end. At the risk of going slightly off-topic: if front-end development is something you could do, have you considered taking up the more generic challenge of updating the current web UI? We already have quite a few REST API endpoints on the board (some of which were written by yours truly) that are not yet consumed by the UI as it stands. |
Beta Was this translation helpful? Give feedback.
-
We’re not married to any of the UI itself, but I’d wager that a lot of the infrastructure for calling the REST api is already “done”, so should be leveraged. I’d suggest you acquaint yourself with the existing UI, which does run, see where it’s at and what you want to keep, and let us know!
Of course there’s always the urge to just start from scratch, but I think there’s a lot of it can be reused to save time!
Cheers,
Dave
… On Sep 10, 2023, at 3:49 PM, Keiran Hines ***@***.***> wrote:
I am more than happy to pickup a bit of the UI work. It will give me a good excuse to properly understand the REST API. What is the current state of the work in progress for the UI. I have noticed a couple of discussions around migrating to Typescript and building out certain features. Before I got started I would want to make sure I was starting along the right path. Is there any current high-priority features/bugs yourself and Dave would like me to look into as a starting point?
—
Reply to this email directly, view it on GitHub <#424 (reply in thread)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AA4HCF27R2BMRM5BNY3MB6TXZY7WJANCNFSM6AAAAAA4R7UAVA>.
You are receiving this because you were mentioned.
|
Beta Was this translation helpful? Give feedback.
-
Sounds perfect!
From: Keiran Hines ***@***.***>
Sent: Sunday, September 10, 2023 4:30 PM
To: PlummersSoftwareLLC/NightDriverStrip ***@***.***>
Cc: David W Plummer ***@***.***>; Mention ***@***.***>
Subject: Re: [PlummersSoftwareLLC/NightDriverStrip] Feedback wanted Tileable effects (Discussion #424)
Ohh don't worry. I intend on keeping as much of the existing infrastructure and code as possible. Based on my initial usage, my short list would be
* Making the landing when you first load the page have something, possible the "home" tab loaded by default.
* Implementing a better effect settings button so the options populate with a wizard style card to config the effect, with the config that that effect can accept.
* Adding support re-ordering the effects, possibly by arrow buttons, or a drag and drop feature.
—
Reply to this email directly, view it on GitHub <#424 (reply in thread)> , or unsubscribe <https://github.com/notifications/unsubscribe-auth/AA4HCFYLDJIHP6WKJVIGRPTXZZENZANCNFSM6AAAAAA4R7UAVA> .
You are receiving this because you were mentioned. <https://github.com/notifications/beacon/AA4HCF5CA4M6UYVCC5SNVXDXZZENZA5CNFSM6AAAAAA4R7UAVCWGG33NNVSW45C7OR4XAZNRIRUXGY3VONZWS33OINXW23LFNZ2KUY3PNVWWK3TUL5UWJTQANI6EQ.gif> Message ID: ***@***.*** ***@***.***> >
|
Beta Was this translation helpful? Give feedback.
-
Is it possible that we make a text file list of all repositories that have
possible code that may get merged in the future and keep it in the
PlummersSoftware/NightDriverStrip repo?
It would be helpful to all if we knew what everyone has been working on so
accidental duplication of efforts are not made. Anytime someone makes a
change, we could easily update this master file, even if the latest entry
is something like “dumped everything from the last 2 weeks and starting
over“.
…On Mon, Sep 11, 2023 at 4:49 AM Keiran Hines ***@***.***> wrote:
If @Louis-Riel <https://github.com/Louis-Riel> is happy to provide an
update on the status of his branch and permission to take it over I can
take a look. I noticed some build updated that I would want to do anyway. I
was going to use webpack instead of Vite, but that's just because I know
webpack.
—
Reply to this email directly, view it on GitHub
<#424 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AF2ATVCCEEABTLYZXGUNOYDXZ3NDLANCNFSM6AAAAAA4R7UAVA>
.
You are receiving this because you are subscribed to this thread.Message
ID:
<PlummersSoftwareLLC/NightDriverStrip/repo-discussions/424/comments/6965786
@github.com>
|
Beta Was this translation helpful? Give feedback.
-
Sounds good to me as long as everyone stays consistent with this and keeps
everyone up to date on their progress in the “Issues” thread. Also, we need
to make this method clear on the main GitHub page under contributing (if
it’s not already there).
…On Wed, Sep 13, 2023 at 4:44 AM Keiran Hines ***@***.***> wrote:
I'd prefer to create an issue for the work. Assign it to the individual
currently working on it with a link to their progress. Also adds a benifits
of giving a reference for discussion.
—
Reply to this email directly, view it on GitHub
<#424 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AF2ATVGJCYDWBPZYMLJERWLX2F56LANCNFSM6AAAAAA4R7UAVA>
.
You are receiving this because you commented.Message ID:
<PlummersSoftwareLLC/NightDriverStrip/repo-discussions/424/comments/6988174
@github.com>
|
Beta Was this translation helpful? Give feedback.
-
I think the Issues section has effectively already become the list of work items, whether that concerns features on the wish list, bugs, or "stuff to investigate". I think mentioning this in the Contributing section of the README is a great idea, including that the existing list of Issues is a great place to look for tasks to pick up. I haven't checked now, but I don't think it's in the README yet. If anyone here has an idea for the phrasing they are very welcome to open a PR to add it, otherwise I'll probably have the time for it this weekend. |
Beta Was this translation helpful? Give feedback.
-
I mostly have a lot of "yeah, what he said" reactions. This is an intriguing idea and I'm very sensitive to the "calling your new baby ugly" effect, but knowing the effects we have (and another ~60 that are in the oven) I just have a very hard time imagining visually merging them to be useful. (Perhaps I lack imagination. That's fair...) For a lot of effects, we're already kind of visually starved for real-estate, so merging them would just lead to visual overload. But my mind can be changed: something more interesting than a clock (sorry) could totally flip my vote - and you don't have to code it to do so. A description or image mockup would suffice. Really, the matrix effects cluster into two groups: the visually bouncy flashy ones that honk every pixel they can find and would (hopefully) automatically look great on a 64x64 or even larger panel if they had it and the very carefully laid out, often text (or almost text) pixels that you just can't clutter further. Weather, Dave's subscriber thingy, or the upcoming sports, airline status, stock style stuff that's quite static and just can't have stuff splashed over it. (Can it?) So given those two categories, how do you imagine tiling or overlaying to play out? I think my outstanding effects work was just held up as an anti-example. That's somewhat deserved, but there was a huge amount of overlap in the 162 (and counting) commits to deliver those. Just touching adjacent lines in the tables controlling enums of the effects would have been dreadful to merge individually and potentially out of order, especially since effects were sometimes co-dependent and needed to land together. (Also not totally great...) I don't expect this to at all be a common case - and I'll readily admit to already being torn on whether it was a good idea or not. The work wasn't done in secret: I've mentioned it before and it's one of only three open pull requests. So I'm not sure we need a lot of overhead to avoid it from happening again. It probably should have had a bugreport/TODO filed for it, but it kind of grew from a related one - that I still intend to get back to - on finding "inspiration" on effects from other similar apps. GitHub doesn't really have a way to "claim" or assign a work item as 'assigned' if you're not the maintainer. (FTR: I have pending code for both Sports and Animartrix...the latter led to the 60+ effects PR.) @KeiranHines , the first two of your three potential work items are things that have actively driven me crazy while working on it. Activity in those would be awesome! It's completely weird that the default screen is essentially blank. While working on that TON of effects, I came across a short ton of settings[1] that would be nice to control. Some are pretty common to all of them (speed, brightness, something else I can't recall at 0600h) and some are just custom to that effect, but would benefit from a nice web UI that would expose sliders or checkboxes or picklists or whatever, but in a way that didn't require a bunch of coding at the bottom level. It probably hit me harder than most both because I stared at scores of such opportunities while doing that work and because I designed and implemented something pretty parallel inside the guts of GPSBabel. It's fundamentally a CLI, but that has a Qt GUI sitting atop (under?) it. I knew that developers of the CLI code had no business designing UI, so I exposed each CLI option through some data types - that were presented to the GUI via a (not so) secret handshake on startup - so the GUI would be customized to the underlying types. It shows that it began life as C and not C++, but each format exposes some ARGTYPE gibberish where you can imagine maps pretty easiily to parse and create Qt widgets or native widgets or HTML widgets or whatever. The basic design has held water for 15+ years and many millions of users. Having types for us where we had "FILE" (for a file picker) beyond just a "string" really helped. GPSBabel's mappings aren't quite a match here, but may be inspirational to distinguish an integer that's an enum (effect #42 is unrelated to effect #43) Once those effects land, I'd like to work with someone with the HTML/Web GUI chops to deliver a really nice UI to the effects. I think I have a pretty good handle on include/effects//.h at this point and think a good partnership where we each sort of speak the language of the other side could move the ball pretty far somewhat quickly. Buzz me. We do indeed already have a lot of really powerful stuff in the REST code that are just dangling wires right now. They're attached in the *cc end, but don't really go anywhere outside the junction box. curl --verbose --data "effectsConfig=1" --data "board=1" http://192.168.2.165/reset as a UI is both awesome and terrifying at the same time. I didn't overlap with Louis in this project and thus don't him or the vibe around the relationship, but it feels a bit uncomfortable to liberate the code from his work tree without a handoff of some kind. Maybe it was just dropped for personal overload, in which case an "as is" pickup seems fine, but if he'd programmed himself into a corner with no way out or there was some pending legal conflict or some other train wreck that merely hadn't happened yet, helping ourselves to the unfinished code could come back to byte us. (Reiterating: I don't know him or the status of the code - this is just my inner paranoia voices speaking a little bit too loudly.) I like your attack planning and hope we get to work together on it soon. RJL [1] I quit tagging them pretty early, but |
Beta Was this translation helpful? Give feedback.
-
I haven’t been following very closely, so might have missed some context along the way, but:
- The main thing is “to what end”; if it enables a cool feature, and it’s well-written and simple to understand, great!
That made me wonder what it could be used for, and perhaps the NFL/NBA/MLB or Stocks would be a good place to start?
- Dave
… On Sep 16, 2023, at 3:26 PM, Keiran Hines ***@***.***> wrote:
Thanks for the reply. Don't stress about "calling your baby ugly" this was the first feature I started playing with as a way to learn about the project, it was something I tossed together in an afternoon as a proof of concept. If its not something the more experienced members of the community this is valuable that is perfectly fine.
As for the UI work. I am getting there. I already have home tab loading by default. That was a simple change. I have also been adding Webpack support to bundle the code better. This has caused some issues with the theming, mostly because I am not familiar with the @mui <https://github.com/mui> libraries. I am hoping I will have them resolved soon and can open up a PR for that work.
Once that is done I will come back to adding the config for the effects.
—
Reply to this email directly, view it on GitHub <#424 (reply in thread)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AA4HCF4HZXBHEXQPFJL2ZWLX2YRTDANCNFSM6AAAAAA4R7UAVA>.
You are receiving this because you were mentioned.
|
Beta Was this translation helpful? Give feedback.
-
I have a start on sports as part of larger API framework work to fetch
arbitrary stuff. Someone else was working on stocks.
If you have ideas in handling the display side of that (i admit I lack the
imagination to see how this would integrate) I'm open to partnering on
that.
…On Sat, Sep 16, 2023, 6:10 PM Keiran Hines ***@***.***> wrote:
Scores, stocks, weather, subscriber counts and of course a clock, could be
a good place to start in my opinion. Maybe the design could be reworked
into the existing framework more as having a set of features that can be
enabled with options.
I haven't looked at the new effects yet, however, currently there is only
2 clocks that I am aware of. I could see a lot of value in a user having a
way to add a clock somewhere on the screen, maybe just a couple of fixed
positions, same goes for weather etc. There is not really a way to view
multiple helpful pieces of information without rotating the effect on a
timer, which may not be idea for all people.
—
Reply to this email directly, view it on GitHub
<#424 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACCSD35QQFU5R2JN4QQ5N2TX2YWWPANCNFSM6AAAAAA4R7UAVA>
.
You are receiving this because you were mentioned.Message ID:
<PlummersSoftwareLLC/NightDriverStrip/repo-discussions/424/comments/7023979
@github.com>
|
Beta Was this translation helpful? Give feedback.
-
Hi all,
I had an idea that I would like to contribute back to the main NightDriver source. Before I open up the PR I would appreciate any feedback so I thought I would create a new idea thread to discuss.
My idea is pretty simple, create a library of effects that can be layered to build an effect exactly how the user wants. For now as a proof of concept I have taken the PongClock effect and remade it in this tileable framework. The source code for this is here.
In that branch there is a new
PatternTilableManager
class, this class would serve as the entrypoint for NightDriver and manage each widget in the effect. For this proof of concept I have a couple of pong games, and a digital clock hard coded to draw at specific positions. TileableEffectWidget serves as the interface for all widgets, with TileableDigitalClock and TileablePong implementing said interface.Next on my list of things to add is some REST endpoints to be able to modify the effect at runtime, following that the ability to persist configuration across boots and finally a web UI do configure the endpoints.
Any and all feedback is welcome, if this is something people want to contribute to, or want to use I am more than happy to open up a PR into the main NightDriver repo.
Thank-you,
If you've made it this far, here is an image of what I have running so far.
Beta Was this translation helpful? Give feedback.
All reactions