Performance degeneration / freezing / packet loss after some time

After the streaming is running for some time time (10-45min and longer) an issue occurs that results in:

bad visual quality (macro blocks)
lost packages
complete freeze of the client app

Stopping the client on the HMD and restarting it helps for a shorter period of time (5-10min) and then the error reappears .
There have been several issue reports (#64, #54, #51, #6) and I'm trying to bundle all information and work done (#66) to find this bug so far.
What we know so far:

Issue is most likely on the client (Quest) side. The encoded video on the server side looks fine
Sound is not the issue, even with sound enabled, the issue appears, but later.
Changing the video encoder settings on the server did not help (intra refresh, number of reference frames and encoder low latency profile)
changing power management on the quest did not help
Using h264 seems to prolong the time until the error occurs
Its not a buildup in one of the queues (NAL or encoder frames), flushing them does not help
Freezing was probably fixed by changing the encoder profile to low latency

You didn't mention that once the issue starts to appear, the Quest app cannot be paused / resume / stopped properly (with menu button) :

The screen becomes black on resume (but sound seems to still work, so does tracking)
In this state if you try to stop the Quest app from the menu, a crash message appears after a little while (either a few seconds after the app is closed, or when you try to restart it).

Like FingrMastr said in the other thread, this suggests strongly that a thread becomes stuck in the Quest, preventing the normal behavior which is to restore the stream on resume, or to close the threads properly on exit.

Is it possible to save the alvr server stream to a local drive?
I would try to watch it with a media player within the oculus quest (VLC-stream and Quest-local) and see if the QUEST reacts similiar to the alvr client.

Is it possible to let the ALVR-server stream pre-encoded (h.264/h.265) video?
I would try to stream by ALVR a video encoded by seperate encoding Software (with similiar parameter in resolution, fps, bitrate etc.) and see if the QUEST reacts similiar to the current alvr stream decoding.

Is there a way to monitor the QUEST Hardware (CPU/GPU utilisation, RAM utilisation, Temperatures etc.) in some way?

Did some testing and analysing (focused on the decoding performance of the quest, independant from ALVR streaming but results could also be valid for ALVR), and I think I found settings which should work without "performance drops after a time".
The problem is the encoding was performed by "OBS Studio", so maybe some of the settings need some translation to ALVR-Server settings....
my conclusion is that following encode setup of alvr should be fine as a input for the oculus video decoder:
encoder: Hardware NVENC
videobitrate: 50000kb/s (50 mbit/s)
audiobitrate: 64
coderprofile: "low latency+quality" (!!)
color format: @nv12
color range:  709; limited
scale filter: bilinear
resolution: 2560x1440 (!!)
fps: 72
Please try the mentioned encoder settings in ALVR.
Some more optimization to the settings color format, color range
and scale filter could lead to better image quality.
To drive native resolution to/with oculus quest without issues, it is much more complicated to achieve, regarding my theory (how the decoder works).
Paket loss could be a seperate problem but could also depend on the performance issue!
_some kind of log/notes, what I did:
start log:
Playback on Oculus with oculus gallery, video streamed by Win 10 DLNA
recorded scene: auto-gameplay in assetto corsa
recording SW: OBS Studio
Some parameters: OBS
encoder: Hardware NVENC
videobitrate: 50000kb/s (50 mbit/s)
audiobitrate: 64
coderprofile: see following explanations
color format: see following explanations
color range:  see following explanations
scale filter: bilinear
resolution: scaled output = basic resolution; see following explanations
Playback on Oculus with oculus gallery, video streamed by Win 10 DLNA
OBS Hardware NVENC
first Step used a ALVR like stream
2888x1600 @72 fps by OBS studio @low latency+quality @standard priority (RTX 2080 ti was in a kind of energy profile in MSI afterburner)
big freezes about half a second (many/all of them are also visible on PC video playback, ingame they were not recognized by me), framerate is lowering over time,
at the beginning of the video is smooth framerate (on pc it looks not that smooth on 60 Hz display but constantly), audio was perfect all the time.
Summary of Quest behaviour: no frequent "network paket loss"-style failures identified within 40 minutes of streaming, but frame rate seems to decrease over time.
Maybe the freezes where a result of writing performance to HDD (5400rpm) or the encoder does not like the MSI afterburner profile.
--> Recorded now to more performant storage in writing (HDD 7200 rpm; SSD), use performance profile @gfx and tested: Big Freezes are gone with HDD 7200 rpm and performance profile for gfx.
--> some theories on working process on the HW decoder (snapdragon 835 specifications) and made some decisions for the resolution and framerate setup...
2560x1440 @ 120 fps by OBS studio @low latency+performance @NV12; 601; limited @high priority (RTX 2080 ti with high performance MSI afterburner profile) for long-term decoding for evaluation of performance drops in decoding (test canceled by my self)
it's not smooth! ugly frametimes... looks like 20 fps
2560x1440 @ 72 fps by OBS studio @low latency+performance @nv12 601; limited @high priority (RTX 2080 ti with high performance MSI afterburner profile) for long-term decoding for evaluation of performance drops in decoding (test canceled by my self)
it's not smooth! ugly frametimes... looks like 20 fps
2560x1440 @ 72 fps by OBS studio @low latency+performance @nv12 709; limited @high priority (RTX 2080 ti with high performance MSI afterburner profile) for short-term decoding for evaluation to get smooth video experience
it's not smooth! ugly frametimes... looks like 20 fps
The difference between "@nv12 709; limited" and "@nv12 601; limited" not further investigated!
2560x1440 @ 72 fps by OBS studio @low latency @nv12 709; limited @high priority (RTX 2080 ti with high performance MSI afterburner profile) for short-term decoding for short-term decoding for evaluation to get smooth video experience
looks smooth!
2560x1440 @ 72 fps by OBS studio @quality @nv12 709; limited @high priority (RTX 2080 ti with high performance MSI afterburner profile) for short-short decoding for short-term decoding for evaluation to get smooth video experience
looks smooth!
*2560x1440 @ 72 fps by OBS studio @low latency +quality @nv12 709; limited @high priority (RTX 2080 ti with high performance MSI afterburner profile) for short-term decoding for evaluation to get smooth video experience
looks smooth!
Last three videos were visually very similiar!
--> tried *marked video setup for longterm video decoding for evaluation of performance drops in decoding: smooth all the time (32 minutes video playback), some very minor frame drops, very enjoyable!
end Log_

@MPfaffe Could you compile the APK and server for testing with those settings? Txs

@TC-VR
sorry, i watched today my first "C++ for beginners video" on youtube, but i can't compile yet :-D.
But I have some news for you after further testing....
I installed now the ALVR version "Experimental 1" to be more independent regarding the resolution of the video stream.
But it turned out that every resolution (HEVC and H264; tried 603x336 up to 4256x2352 , at 60 or 72 Hz and 50 mbit/s leaded to performance decrease and sometimes to freezes of the client.
BUT!
Than I tried 4256x2352 ( HEVC 175%, 72 Hz, 100 mbit/s (was ingame locked to 60 fps... I assume the nvidia encoder limited) and there were no performance decrease over time (30 minutes tested)!
And nearly no packet loss!
Also at 150 % HEVC resolution @72 Hz @72 fps gameplay (auto gameplay, can't say anything about movement latency ;-) ) there were no problems.
So at the moment I recommend to use at least 100 mbit/s videostream. (for stability in case of good network setup/performance)
I could imagine there is something going on with the network performance if it is "bored". Maybe something switches to a lower network performance mode after a time and then the high latency confuses the ALVR-Client...
Currently I tried to switch off some energy suspension modes of my gaming PC: ethernet card , set highest Performance in Win 10, set highest performance in the Nvidia setup programm and also I disabled a setting "WMM APSD" in my router. But with 50 mbit/s videostream the performance decrease always after about 15 minutes...

@MPfaffe thank you for testing!
The quest has an OLED panel with 2880 x 1600 resolution. Thats why we use it. Using a lower resolution will cause a blurry image.
The used preset is "NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ" which is recommended for low latency application.
Color format is nv12 for Windows 7 and RGB for 8 and 10. I have no idea why?! I forced nv12 on my Windows 10 and had no issues or bad image quality.
Is anyone using an AMD card?
Problem for me is, that I rarely get the issues at all. I played 1,5h Fallout without issues with settings others get problems after 10 min. Has someone a game that triggers the problems very fast?

@MPfaffe thank you for testing!
The quest has an OLED panel with 2880 x 1600 resolution. Thats why we use it. Using a lower resolution will cause a blurry image.
The used preset is "NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ" which is recommended for low latency application.
Color format is nv12 for Windows 7 and RGB for 8 and 10. I have no idea why?! I forced nv12 on my Windows 10 and had no issues or bad image quality.
Is anyone using an AMD card?
Problem for me is, that I rarely get the issues at all. I played 1,5h Fallout without issues with settings others get problems after 10 min. Has someone a game that triggers the problems very fast?

So this is with the released v7 experimental? Using ffr @ 50mb/s? Ik Will give it another shot with Skyrim and ED.
Txs!

@TC-VR No, current experimental + some small changes on the client

@TC-VR
my latest test were performed with experimental v1
@JackD83

The quest has an OLED panel with 2880 x 1600 resolution. Thats why we use it. Using a lower resolution will cause a blurry image.

I'm aware of this behaviour, but I imagine that feeding the Quest-decoder with higher resolutions than 2560x1440 @72 fps can lead to some issues.
The most detailed information on Qest-decoder capabilities/modes found in the web:

The DPU is capable of outputting 2160p60 video with 10-bit color to a wide color gamut 10-bit internal or external display, although we have not seen any 10-bit panels for mobile devices yet. The DPU also supports Q-Sync, which allows a Q-Sync capable display to refresh as quickly as the GPU can render frames.
Snapdragon 835 can also decode H.264 (AVC) and H.265 (HEVC) video at up to 2160p60, 1440p120, or 1080p240.<
my Interpretation:
--> I can imagine resolutions higher than 1440p (2560x1440) will be decoded only frame by frame (max 60 fps). Resolutions up to 1440p (half the pixels of 2160p) could be decoded with max 120 fps by decoding in a partly parallel and half-frame delayed way.

-->but the decoder seems not to be strictly limited to these supported modes/specifications as current Tests and common use of ALVR showed:

Resolution 4256x2352 @60 client fps (@100 mbit/s) --> resolution is definitly not within the specification/supported modes but worked without performance decrease. The computing of the additonal pixels should lead to higher torture to the hw-decoder as with specified/supported settings.
Resolution: 2880x1440 @72 fps (@ 50 mbit/s) --> performance decrease after some time (in my case 15 minutes with assetto corsa), sometimes freezes (I think it's a combination of an event in the network performance, maybe in combination with high torture to the decoder)

-->in my opinion the decoder could potentially handle 2880x1440 @72 fps not in one compute cycle but in two within performance-specification but maybe the way it has to proceed is not supported/realized. (some kind of parallel/delayed/partly-picture computing :-D)
My current assumptions/conclusion (just thoughts and theory):

at the moment: if the decoder computes at higher resolution than 1440p @72 fps, it could lead to additonal aging of the decoder HW and to computing failures due to use over specification/supported modes (like an overclocked CPU).

I believe the major reason of instability is something within the network
The performance decrease and Client freezes also occur @Resolution 603x336(!) @1mbit/s (!) after 15 minutes (!), but there are no (!) problems @about 4k resolutions @60/72fps @100 mbit/s .

"100 mbit/s" could be some kind of threshold.... e.g. pc ethernet adapter support modes: 1000/100/10 mbit/s --> maybe e.g. after a while with 50 mbit/s streaming, network adapter switches operation modes from 1000 mbit/s to 100 mbit/s (because it is enough for 50 mbit video streaming and leads to saving energy) but maybe with bad effects to network latency --> maybe it could lead to errors within ALVR Client...
As I said... just thougts and assumptions

@JackD83: could you compile your latest experimental? I would like to test it on my system. The released experimental V7 crashes after 10-15 minutes of Google Earth. Prior to that, image (with FFR slices) looks bl*dy brilliant and tracking is like native Rift S tracking.

@TC-VR I'm getting an error starting the windows client.

jackd83 made this comment to a build done by @LibreGit with a similar error
Builds made with the latest Visual Studio version require the latest vc runtime

jackd83 made this comment to a build done by @LibreGit with a similar error
Builds made with the latest Visual Studio version require the latest vc runtime
Indeed, you could install cuda 10.1 and visual studio 2019 (free). This will install all latest dll's and drivers...

@andy-d1969 I have to disagree. Using any other resolution as the panel resolution will result in a scaled image. How well it will be scaled depends on the display and other factors. The lower resolution of home and other games is due the fact that the quest is not capable of keeping the frame rate and they have to compromise. We are rendering on the PC. That's why I chose the panel resolution as default.
If you do want to use a lower transmitted resolution, you don't need to patch anything. Just use the video resolution setting in alvr.
@all please keep this thread about the performance issue

Hi everyone. I had a pending test and I am reporting back.
I finally could test on my Win10 machine which have the same hardware than the Win7 one.
I usually always play at 90MB/s 100% resolution without issues as I don't mind the bit extra of latency (mostly play VRChat) but for the test and seeing that some users report it to happen below 100MB/s, I used the usual 50MB/s 100% res no FFR. I played for like two hours without a single issue, total packet loss 74 with a latency of about 79.
So this is definitely not a Win10 related issue or at least not JUST due that but maybe a combination of Win10 with certain hardware/drivers. The thing is that has been already reported that using half duplex on the NIC fixed the issue besides the added bit of latency and those that had the issue on Win10 also had it on Win7 after installing it in a partition in the same machine.
So we would need way more info here to know the source. I guess the main issue it's debugging this it's quite hard unless you add some debug options to enable through the server which could make the client to create some log files that we could upload? I still think that the biggest hint here it's when @Susanoo1337 did the half duplex test and found that the issue was not there. I am not using such settings, my NIC it's set as automaic but tested at full 1Gb/s manully and everything still worked perfectly fine.
I don't think I have more tests to do but if someone has any suggestions or wants me to try something just let me know. Hope you guys can fix it soon but I feel it's tied to the way your GPU encodes or how the NIC/router handles all the data being sent. Being a Quest app problem would be weird since we all are using the same apk version.

@KitsuneShan
could you please give some information about your used NIC (type, descrete NIC-card?), Graphics card (type, driver version) and router (type and OS/firmwareversion)?
Did you perform any changes to standard settings?
Thank you in advance!

@KitsuneShan
could you please give some information about your used NIC (type, descrete NIC-card?), Graphics card (type, driver version) and router (type and OS/firmwareversion)?
Did you perform any changes to standard settings?
Thank you in advance!

I have an i7 4790K, Asus Sabertooth Z97 Mark 1, 16GB RAM. I used to play with a 780Ti on the Win7 desktop at 60MB/s, 75% res, H264 just fine but it broke. On the Win10 desktop I had a 1060 3GB and just used ALVR once for a couple of minutes just to test the latency and if there were a clear difference between H264 and H265 but never long enough to test performance issues (the few minutes I played it was perfectly fine). Like a month or two the 780Ti broke and I got two 2080Ti for both desktops. With the 2080Ti I play, as I mentioned before, at 90MB/s, 100% res, H265 on the Win7 desktop. On the Win10 desktop I rarely play so I only have the 50MB/s test that I just did. My motherboard have two NIC, I use the Realtek one. Settings are the default one except for a few related with WOL that would make my desktops to wake from sleep. The nvidia drivers on the Win10 desktops are up to date, on the Win7 one it's the same I installed when I bought the cards and didn't update yet as everything works fine so far.
I use an Asus DSL-AC68U that I had laying around after we switched to fiber as the only access point for the Quest. It's connected to the main router just like both computers through an enthernet cable. The Asus router uses the MAC filter so only the Quest and my smartphone can connect to it, it's set as access point using static HDCP, there is no encryption or any other protection besides the MAC filter and only the 5GHz WiFi it's activated which is also set at 40Mhz as recommended and with a channel set far enough from the main channel to avoid interferences since my main router also have 5GHz WiFi among 2.4GHz one (I use this router for all the rest of devices).
I don't change anything on ALVR except of what has been already mentioned, MB/s and the setting to activate the mic. The rest it's as default with default buffer size and no FFR enabled. I have also played Skyrim without issues on the Win7 computer for several hours. I didn't try on the Win10 one yet but I highly doubt that there would be any difference at all unless ALVR works perfectly fine for you using VRChat too.
There is just one detail and it's that, for whatever weird reason, my Win7 computer doesn't seems to reach more than 106MB/s of upload speed while the download speed reach the maximum provided. This does not happens on the Win10 machine so I guess this may be due firewall or whatever other Win7 issue/bug.
I didn't monitored the network performance yet, I may try to do so but I guess it would be faster to simply test a non online game directly. But remember, some people with the issue on Win10 had it on Win7 too once they tried. Another important data it's how they "fixed" it limiting the NIC to 100MB/s. This seems to indicate that may depend on each NIC performance and capabilities.

@KitsuneShan
thank you for your detailed reply!
I did some more testing regarding network behaviour, here the most interesting (realtek NIC, ASUS RT AC2900):

I used ALVR (50 mbit/s) and parallel I streamed a video (70 mbit/s) to a device which is connected to 2,4 GHz wifi
--> nothing changed, the performance decrease still occur after 15 minutes...

I used ALVR (50 mbit/s) and parallel I streamed a video (DLNA WIN 10 70 mbit/s) to a device (WIN 10 Laptop) which is connected to 5 GHz wifi --> no performance decrease within 30 minutes!
--> In my opinion this leads to the router (behaviour in using the 5 GHz) as the reason for the performance decrease!
--> than I paused the video (Windows mediaplayer) on the laptop --> the performance decrease popped in immediately --> start playback again --> no performance decrease.

-I used ALVR (50 mbit/s) and parallel I transimitted big video files to the Laptop which is connected to 5 GHz wifi  --> the performance decrease popped in immediately
--> canceled the file transfer --> no performance decrease

I don't understand your last point. Wouldn't canceling the transfer of those files set it back to the default scenario where you are just simply using ALVR streaming to Quest?

Yes, I assume it's the same scenario. After one minute I turned on the file transfer and saw the performance decrease for one minute, then I turned the file transfer off and then the fps went back to relative stable 72. After that happend I stopped the test, i think after further 10 minutes gameplay the performance would have dropped again.
Two weeks ago I tried to change some settings of the router (I think because of frequent packet loss in ALVR, but hard to remember), this includes also QoS, I think I turned it off because it improved things. But I will take look on it at sunday again. Thanks for the advice!

Also, why would you assume it's the router itself and not the NIC doing all that?

I assume this because the Test behind the first two points should be the same network traffic for the NIC, but with different results.
The first test shows that there is no effect in streaming an additional video from the ALVR PC to the 2,4 GHz wifi (Quest was always the only device in the seperated other SSID 5 GHz wifi).
The first Test shows if there is a second stream (ALVR PC to a added second device) within the 5 GHz wifi (overall over 100 mbit/s) the performance decrease is gone. For the ALVR PC NIC both tests shall be equal.
Does someone know how large the data transfer of ALVR is, besides the video stream? E.g. Audio (same stream or separate?), Position data... (additional data). And how is it transferred between PC and Quest? Is it more like a stream (stable bitstream) or like a file transfer (transfer on-->transfer off --> next file)
I could imagine that both, ALVR videostream and additional ALVR data, stay against each other in the routers priority decision. The router doesn't know that it is for the same application and need same priority. (I keep in mind that audio and tracking are still fully alive, if the performance decrease or freezes occur!).

I still think that the biggest hint here it's when @Susanoo1337 did the half duplex test and found that the issue was not there.

Thank you for the hint
I could imagine that it helps, as the video and most of additional data flows in the opposit direction (start/stop file like transfer of the video with buffering?)... i will try it on sunday!
I have 100 mbit/s full duplex already tried, with no success.

This could be just coincidence but:
When playing Skyrim, one has to make sure that Steam VR room setup is set as Standing only. Then make sure when launching the VR server you reset your position by long pressing the Oculus button (this will recenter the Steam VR floor circle). I found out that when you're not in the Steam VR circle, all starts well but within 5 minutes of play, degeneration kicks in untill unplayable.
I played Elite Dangerous and used the seated Oculus room and never experienced any problems.
The experimental branch at the moment is very good, every other 20 to 30 minutes i'm getting a micro stutter (I gues GPU related) but definitely a very good and very crisp image. I just revisited "Blackreach" in Skyrim and it looks so good compared to Rift S, the colour reproduction on the Quest using ALVR is just plain insane! I'm realy hoping the Oculus link can provide a similar experience, if not, ALVR is just great AND unthetered.

some more experiences in my cases (target bandwith 50 mbit/s):
-Activation/deactivation of the setting "QoS" in the router did not help.
-Setting the NIC to "100 MBit half duplex" did not help.
-then I tried some settings of the ALVR buffer and with 100 kB Buffer there were no (!) continues performance decrease @ 50 mbit/s.
-then I tried 159 kb Buffer @50 mbit/s... and again there occured the performance decrease after a time.
This means:
half the bandwith --> half the buffer
100 kb in buffer @50 mbit/s should be around one frame in the buffer. 200 kb in buffer @100 mbit/s should be also around one frame in the buffer.
maybe the buffer should be linked to the video bitrate setting and limited to around one frame?

@MPfaffe, I will thinker with this as well since I use 200 KB buffer with 100 Mbit/s and everything jus works whereas previously I used 40 and 50 Mb/s with a 200 kb Buffer and had problems as well. I changed it to 100 Mbit after I compiled again from the branch and no more degredation (except when i'm not in the Steam VR circle... very strange...
Maybe when outside the Steam VR circle, tracking en localisation datastream needs constant corrections/repositions between the Oculus bounderies and the Steam VR bounderies
and gets priority over the video stream?? This woudl also explain when it's starts detoriating when outside the circle, the image corrects itself immideately when standing still and gets a lot worse when moving controllers/hmd...

Hello again, I've been very busy recently so I couldn't spend any time on VR.
But here I am again, with some new results:
The glitch seems to not be dependent on your NIC. I've finally gotten around to trying my Intel 82574L network chip in the other PC, and no issues arose.
The entire gaming session (~1hour), until the ALVR app on the Quest crashed, had 0 packets lost.
Running on 30Mbps with a 200kb buffer on Win 7.
My other machine, Win 10 and 7, has under the same conditions, with the same NIC, experienced massive transfer degradation after only 11 minutes.
The last possible factor is the MB Chipset. The machine which can run ALVR flawlessly regardless of settings is using an antique Z77 chipset. Kitsune is using a Z97 chipset without problems.
My issues arise on the machine with a Z390 chipset.
Could you @TC-VR and @MPfaffe post your MB/chipsets, maybe there is a common through line somewhere here.
Other than that, the only other diverging factor I can exclude on my end is the GPU, my older PC has a GTX970ti and my newer has a 1660ti. I can swap the GPUs and see if the issue follows or remains.

@Susanoo1337 I am not sure if it would be tied to the GPU. In some ways it should be the biggest factor knowing that it's who it's enconding the video after all but before the 2080Ti, I used to play on a 780Ti which, even tho it has more CUDA cores and slightly better performance than 970, I don't think it would be a decisive factor. With the 780Ti I had to use H264 tho as it does not supports H265. But I am sure you already tried with H264 just for the testing sake with same results. But that's the thing, 780Ti it's even older and it was fine. My only issue was due performance since gaming and streaming with these GPUs were not so optimized and you could notice easily the performance drop when streaming which made me play at 75% resolution (or with FFR) on VRChat to mitigate the fps drops a bit. Playing at 100% still worked tho, no performance issues on Quest side besides the in game performance itself.

Gigabyte H370 HD3 => Intel H370 chipset
Intel i5 8400 cpu,
16GB DDR4 ram,
Gigabyte Nvidia GTX1070 8MB
Network : Gigabit Ethernet (Intel® GbE LAN),
WIFI AC Router 5Ghz, placed in line of sight, computer connected via ethernet to router, connection speed 867 Mbs

my sys:
AMD Ryzen 7 1700
Asrock B450 pro4 (AM4; B450 chipset)
32 gb DDR4
RTX 2080ti
onboard NIC: realtek 8168h
router: ASUS RT AC2900

I'm using h264 65mbps. Buffer size is 708kb and sliced ffr on. Client frequently micro stutters but it never gets noticeably worse, although it is clear it is not butter smooth most of time. I can see client fps dropping to 50-60s. I am seeing 500 packet losses in 2 hours or so of constant use. The client crashes once in an hour or more rarely. V6 and v7 didn't make difference for these issues for more, at least it is nothing extreme anymore in my case like it used to be.

@Susanoo1337

The entire gaming session (~1hour), until the ALVR app on the Quest crashed, had 0 packets lost.
Running on 30Mbps with a 200kb buffer on Win 7.
My other machine, Win 10 and 7, has under the same conditions, with the same NIC, experienced massive transfer degradation after only 11 minutes.

On the win 7 machine, the FPS are stable at 72 until it freezes? Is in both cases the same router used?

Maybe when outside the Steam VR circle, tracking en localisation datastream needs constant corrections/repositions between the Oculus bounderies and the Steam VR bounderies and gets priority over the video stream??

Are both virtual boundaries dependent of each other? Additional data transfer besides the videostream could maybe lead to some kind of priority decision with advance to the additional transfer...
Further experiences, which could correlate with the performance decrease issue:
-After performance decrease occurs, then I stop the ALVR Server and start the Server again with same settings --> the ALVR client freezes.
But if I start the Server again with different Codec (h264 <-> h265), it works again until the performance decrease occurs after a time...
-after freezed ALVR client, I stop the ALVR client over the oculus home button. Then I reopen the ALVR client and it says the application has stopped... it seems that after freezing of the client and closing of the client, the client still runs in the backround.
Maybe off-topic: using the h265 codec, there were several "flashing" images during gameplay... I didn't recognized that on h264

@MPfaffe
I actually recall having similar experience of alvr client possibly staying in background. If I exit alvr client, it appears to close but says it stopped as soon as I reopen it.
Gtx 1060 3gb
Pentium G4560
Realtek PCIe GBE Family Controller
D-Link DIR-809 router (ethernet from pc to router)
No audio/mic streaming. Audio works without a problem. I remember performance decreasing over time in past, at least 2 releases ago, whenever I tried using mic, sometimes it wouldn't even stay connected for more than few seconds before latency grew to seconds, constantly becoming more and more delayed.

@JackD83 : Maybe you could recompile V7 for release? Is it possible something went wrong with the compilation of this build at the time? Here's my build attached.
ALVR_EV7_20191030.zip

Hi TC-VR,
followed this topic and I think, you are on the right way!
After doing dozens of tests, friggeling with router settings and experimenting with ALVR, this Post frome you comes up. Deleting the configration under %LOCALAPPDATA%\ALVR and start from scratch up. Don't know, if it's with this build, but in the meanwhile, die ALVR Server "hangs"... showing the HMD disconnected, but everthing works as it should! Crazy...
Anyway, I also recognized the advises to 100MBit/200kb and 50MBit/100kb and tried with these settings - and it works! I also activated FFR "Slice" (other stettings default) with no visual degration - fantastic! Didn't touch any other settings beside "launch SteamVR without Steam", which should not matter at all.
My system specs:

i7 4770S with 16GB of DDR3 on ASUS Z-87A
nVidia RTX 2800 (single ;-)
Win10 x64 Pro 1909

Settings of ALVR (to be precise ;-)

Bitrate 30MBit > 50MBit/100kB (alternative > 100MBit with default 200kB)
FFR > Slices
Launch only SteamVR... > ON

And it gave me a wonderful image, rock-stable perfromance (no frame drops, as I can say ;-) and without performance degeneration or a complete "hang" of the Quest-App.
For the first time...
Many thanks for your effort and your investigations (also for the help of all others).
Souch a community is "the best of the quest" :up:
Gunnar

@gunnarweibrink
Indeed, I did just the same thing: 100 Mbit/200kb AND 'Launch only SteamVR... > ON' and also i quit the nvidia experience service...
And you are right, because of the current stability my 'tests' usually end up in over an hour play sessions ;-) and when I want to print screen the server window, it always shows 'HMD not found' but everything just works and keeps working.
Little tip to increase the resolution even more:
After you launch the Steam VR server (with Quest client running), go to the Steam VR settings and

check the 'Custom Resolution' box in video settings (mine is calculated at 144%)
set the individual applications video sliders to 100% for each application
Restart Steam VR

Stunning image quality, no stutter and no packet loss... Skyrim looks amazing and Google Earth VR is to die for. Pavlov VR feels nearly as native as the Quest variant but the visuals!
Glad to help, but really: it's @Plygrapheen and @JackD83 that have been doing the heavy lifting.
But thanks to the testing of @MPfaffe, @Susanoo1337 and @KitsuneShan and all others I arrived at this point where I'm not really sure that Oculus Link will be worth our while ;-)

@gunnarweibrink
everything with a "buffer to videobitrate ratio" of about "2" works (videobitrate in Mbit/s, buffer in kB)
--> possible alternatives:
58mbit/s @ 119kB;
69 mbit/s @138 kB,
79 mbit/s @157 kB....
and so on.
Increasing the Buffer @those Bitrates leads to performance degeneration and freezes. Decreasing the Buffer @those Bitrates could lead e.g. to more frequent pixelated images.
It was a pleasure for me to test and I am glad to achieve some helpful results!
But it is a bit disappointing not to find the reason for the issue...
The big target is to help improving the ALVR application more and more! ;-)
Thanks to all who are participating in improving ALVR! In my opinion it is a great software for VR in general!

It was a pleasure for me to test and I am glad to achieve some helpful results!
But it is a bit disappointing not to find the reason for the issue...

The big target is to help improving the ALVR application more and more! ;-)
Thanks to all who are participating in improving ALVR! In my opinion it is a great software for VR in general!
Amen to that! Ik also have Virtual Desktop and I would reckon that with the combined efforts of Polygraphene, JackD83 and ggodin (VD), the Quest would become thé VR headset to beat for months to come. The current ALVR still has a big edge over Virtual Desktop but the last beta has closed the gap somewhat. Still a lot of work

I'd copy that!

Indeed, I did just the same thing: 100 Mbit/200kb AND 'Launch only SteamVR... > ON' and also I quit the nvidia experience service.

Those services are never active, because "GeForceExperience" isn't installed... as always.

everything with a "buffer to videobitrate ratio" of about "2" works (videobitrate in Mbit/s, buffer in kB)
--> possible alternatives:
60 mbit/s @ 119kB;
69 mbit/s @138 kB,
79 mbit/s @157 kB....
and so on.

But this could be a a good workaround, even for ALVR.
Jut put a "link" button beside the slider which synchronizes these settings as shown by you.
If somebody would like to "experient" with these, it can be deactivated.
Also FFR with "Slice" should be default :)
Great people here!
Gunnar
P.S.: but what is the "special" about your build, TC-VR?

I recently experienced some similiar behaviour to the freezing issue of the ALVR client.
It happens at the beginning of the game "pistol whip", when the game and scenes are loading, but in this case it is only temporarly. Once the game/scene is loaded the issue does not occur furthermore.
My question:
Does the ALVR client write/read anything to/from the quests "harddrive" or only to/from RAM?

@MPfaffe the client should not freeze at all. Are you sure it's the client that freezes and not the server rendering the game? Some games like fo4 drop back to steamvr loading screen if I save the game.
For the performance issue, I can tie thx buffer to the video Bitrate if this solves this issue. There is already a calculation for the sending part that is based on the video and audio bitrate

@JackD83

Are you sure it's the client that freezes and not the server rendering the game?

First I have to say I'm still on experimental 7, maybe the freezing issue is already fixed within the current source code.
Following events are in my opinion evidence for the client's freezing/beiing not responsive and server is still working:

-after freezed ALVR client, I stop the ALVR client over the oculus home button. Then I reopen the ALVR client and it says the application has stopped... it seems that after freezing of the client and closing of the client, the client still runs in the backround.

during "only" performance degeneration, it is the same behaviour
during "only" performance degeneration, if pressing the oculus button to exit the application and resume by pressing again, the screen is just black
during performance degeneration/freezed state, closing the client, the server seems still working (see "Furthermore"). After a while (about 30 s), there is a notification in the quest that the application has stopped and with that the network traffic is vanished.
before performance degeneration starts, if closing the application on the quest the network traffic vanishes immediately.

--> it seems the alvr client is not responsive in case of performance degeneration/freezed state
Furthermore:

during freezed state (stand still video output on quest) of the application, the network traffic of the video is still there (task manager)
during freezed state of the application, the VPU utilisation of the graphics card is still there and refreshing (according NVidia Inspector)
during freezed state of the application, the alvr server continues sending the data; "encoding latency" and server FPS are still refreshing; transport latency, client FPS and decode latency are not refreshing/there seems to be no feedback of the client  (ALVR Server diagnosis, sometimes the connection between server and client is lost)

-->server side activities seems working, no feedback of the client to ALVR server diagnosis

Some games like fo4 drop back to steamvr loading screen if I save the game.

I remember some statements that FO4 was full of bugs, also regarding saving and loading savegames. In your case the client seems still to work properly at steam vr home screen/dashboard.

My question:
Does the ALVR client write/read anything to/from the quests "harddrive" or only to/from RAM?

Just want to ensure that the videostream is not "accidentally" transfered to the flash storage of the quest :-D

I apologize for my absence in the last weeks. I’ve a company to keep running so...
I did a little discovery. I tried 5 different WiFi routers, with the exact same topology, wired ethernet connected to pc, WiFi 5ghz ac-only connected to quest. Also, I tested with Elite Dangerous in the exact same conditions. I discovered that using two of them there is no performance degradation. Two TPLink, one Technicolor, one Linksys, one netgear. Here are the models and results:
TPLink Archer M200 - performance degradation
TPLink Archer M600 - performance degradation
Linksys AC1750 - performance degradation
Technicolor TC 582 - NO performance degradation
Netgear R7000 - NO performance degradation
So, I think network jitter is involved.
Hope this helps...

I use this acces point: Compal CH7465LG (provided from my ISP as a network Wifi booster). It's supposed to be based on the Intel Puma 6 chipset (with a bad rep when it comes to jitter...)
But, then again, afer I recompiled from the main experimental branch and since I play at 100 MB/s with 200 kb Buffer, I haven't experienced packet loss nor freezing!!
Skyrim
It really is amazing to be able to play Skyrim (@144% video setting in Steam VR and maxed-out super sampling in-game). The visuals are (thanks to a couple of mods) just amazing. I've been playing at least 20 hours now without a single hiccup or freeze.
Elite dangerous
It's just an awesome experience (much better with the Quest and ALVR than with the Rift S thanks to the vivid oled screen colors and deep blacks) The Rift s 'might' be a hair sharper but i'm having a blast (using a X52 Pro and Voice Attack)
Pavlov VR
Great visuals, no artefacting, just the input lag will kill you ;-). The tracking is pretty close to the Quest Version but the lag is noticable.... alas...
I really wonder if the Oculus link can top my ALVR experience... Unthetered for a bit of tracking lag... I'm fine with that...

@TV-VR Happy to see that it's working great for you. The buffer tuning is something I have to try too.
It's really good if it can prevent the performance degradation and freezing to even appear. Still the weird part is that when it appears it seems to put the App in such a buggy state that it cannot recover unless you restart it.
About Oculus link, ALVR still needs a sliced encoding implementation to lower the total latency and be closer to a tethered experience latency I think.
The best would be to have a slider to choose the number of slices you want for each frame, so people could finely tune it (because the more you have the lower the total latency will be, but the smaller each slice is, the less efficient the encoding, so the total bandwidth and processing power needed will also raise a little bit)

But, then again, afer I recompiled from the main experimental branch and since I play at 100 MB/s with 200 kb Buffer, I haven't experienced packet loss nor freezing!!

Just to be sure... you referring to the "ALVR_EV7_20191030.zip", you've posted here?
Or is there a newer one?
Gunnar

Just to be sure... you referring to the "ALVR_EV7_20191030.zip", you've posted here?
Or is there a newer one?

Indeed, still using the ALVR_EV7_20191030 version.... just to be on the safe side, I would advice to install Visual Studio 2019  and Android Studio so you get the latest Microsoft runtimes...  But the game changer for me has been

Make sure you're on the 5 GHz WIFI AC band (I always turn the Wifi off and on in the Quest prior to starting the ALVR client)
Set Bitrate to 100 MB/s and leave the video slider on 100% (initially it always displays 2432x1344) and set the Buffer Size to 200 KB. All supersampling is done in Steam VR and/or in-game)

I used to program in PHP but haven't touched a piece of C-coding in quite a while (20 odd years I guess). Nonetheless, I will try to program a slider which will link the buffer with the bandwidth and recompile...
My Settings

@TC-VR why the sent rate shows 20mbps instead of 100? When I set mine at 90, it does send at 88-90 but yours seems way lower.

I wasn't playing anything... just the SteamVR void running. It's a dynamic stream...
This is a screenshot when streaming Skyrim (The Packet loss is a result of switching between room scale and seated after an Elite Dangerous session). In the games, packet loss is a rare occurence...

Don't install the complete Visual Studio or Cuda if you don't need it. vc runtime from here is enough. My gaming PC and dev PCs are in a different rooms. There is no VS on the gaming machine.
I will implement the linked mbit to buffer. My idea is to keep the buffer slider but make it an offset to the used buffer and display the current used buffer size beside it.
I'm still wondering why you can play at 100mbits. If I go over ~70mbit, I get massive packet loss

I'm still wondering why you can play at 100mbits. If I go over ~70mbit, I get massive packet loss

Indeed, here's some footage of Skyirim recorded with the Quest recorder function:
https://youtu.be/ZTNyCodPqc8
Since Vader Immortal is cross-buy I also installed Revive and the PC version and apart from some extra latency on the controller tracking because of the Revive layer, Vader Immortal PC runs flawlessly via ALVR. I only needed to apply the gamma trick to get a more clear engine but boy teh visuals are stunning:

edit %username%\appdata\local\WKND\saved\config\WindowsNoEditor\Engine.ini
add string of code:
[/Script/Engine.Engine]
DisplayGamma=3.5

here's my footages..
https://drive.google.com/file/d/10vFZyPwbPVjCu_jWB8aiLmj2Is5i1_CT/view?usp=drivesdk
I5 4690/gtx1070 win 10.
Xiaomi Mi Router 4a gigabit edition (no internet connection with Ethernet cable plug on pc. just use 5ghz wifi for my Quest. setting lock 80mhz)
i use other usb wifi for internet.
Setup : Codec H.265 HEVC, Bitrate 130mbps, Video resolution 100%, Buffer 1012, FFR Slices 2.5/0.
Sorry for my bad English.

here's my footages..
https://drive.google.com/file/d/10vFZyPwbPVjCu_jWB8aiLmj2Is5i1_CT/view?usp=drivesdk
I5 4690/gtx1070 win 10.
Xiaomi Mi Router 4a gigabit edition (no internet connection with Ethernet cable plug on pc. just use 5ghz wifi for my Quest. setting lock 80mhz)
i use other usb wifi for PC internet.
Setup : Codec H.265 HEVC, Bitrate 130mbps, Video resolution 100%, Buffer 1012, FFR Slices 2.5/0.
Sorry for my bad English.
Sound delay when recording with quest.

Great footage! How is the tracking, any latency?

Please make a new issue to exchange settings or recordings!

Please make a new issue to exchange settings or recordings!

Sorry, my bad... to excited I guess..

I released ev8 with the stability improvements and the liked buffer size. Please test and report back!

v8 error, cannot load library, need c++ 2015.

Details:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
at ALVR.Launcher.SaveSettings()
at System.Windows.Forms.Form.OnFormClosed(FormClosedEventArgs e)
at System.Windows.Forms.Form.RaiseFormClosedOnAppExit()
at System.Windows.Forms.Application.ExitInternal()
at System.Windows.Forms.Application.Exit(CancelEventArgs e)
at ALVR.Launcher.Launcher_Load(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at MetroFramework.Forms.MetroForm.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at MetroFramework.Forms.MetroForm.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: <IP_ADDRESS>
Win32 Version: 4.8.4042.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
ALVR
Assembly Version: <IP_ADDRESS>
Win32 Version: <IP_ADDRESS>
CodeBase: file:///C:/ALVR/ALVR.exe
System.Windows.Forms
Assembly Version: <IP_ADDRESS>
Win32 Version: 4.8.4042.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_<IP_ADDRESS>__b77a5c561934e089/System.Windows.Forms.dll
System
Assembly Version: <IP_ADDRESS>
Win32 Version: 4.8.4001.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_<IP_ADDRESS>__b77a5c561934e089/System.dll
System.Drawing
Assembly Version: <IP_ADDRESS>
Win32 Version: 4.8.3761.0 built by: NET48REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_<IP_ADDRESS>__b03f5f7f11d50a3a/System.Drawing.dll
MetroFramework
Assembly Version: <IP_ADDRESS>
Win32 Version: <IP_ADDRESS>
CodeBase: file:///C:/ALVR/MetroFramework.DLL
System.Configuration
Assembly Version: <IP_ADDRESS>
Win32 Version: 4.8.3761.0 built by: NET48REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_<IP_ADDRESS>__b03f5f7f11d50a3a/System.Configuration.dll
System.Core
Assembly Version: <IP_ADDRESS>
Win32 Version: 4.8.4042.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_<IP_ADDRESS>__b77a5c561934e089/System.Core.dll
System.Xml
Assembly Version: <IP_ADDRESS>
Win32 Version: 4.8.3761.0 built by: NET48REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_<IP_ADDRESS>__b77a5c561934e089/System.Xml.dll
MetroFramework.Fonts
Assembly Version: <IP_ADDRESS>
Win32 Version: <IP_ADDRESS>
CodeBase: file:///C:/ALVR/MetroFramework.Fonts.DLL
Accessibility
Assembly Version: <IP_ADDRESS>
Win32 Version: 4.8.3761.0 built by: NET48REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_<IP_ADDRESS>__b03f5f7f11d50a3a/Accessibility.dll
Microsoft.CSharp
Assembly Version: <IP_ADDRESS>
Win32 Version: 4.8.3761.0
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.CSharp/v4.0_<IP_ADDRESS>__b03f5f7f11d50a3a/Microsoft.CSharp.dll
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

fix after reinstall Visual Studio 2015, 2017 and 2019

@JackD83 why it's the resolution that weird like 2432x1344 instead of the default Quest resolution?

There is no change in resolution. 2432x1344 is just the default setting that is updated once the quest is connected

Anything new on this issue?  :P

No, since you linked the buffer to the bandwidth, I have no longer experienced any problems. It's working great.

I still get 5 second lag/performance degenaration every 10 min.

No, since you linked the buffer to the bandwidth, I have no longer experienced any problems. It's working great.

I still get 5 second lag/performance degenaration every 10 min.

I'm experiencing more stuttering and more frequently happening infinitelly increasing latency. So if I move around, everything I see  happens behind in time with increasing latency, no dropped frames though. If I pause alvr client, it fixes it most of time. It looks really horrible when latency increaes because it looks like the image is floating in front of me loosely, following my head movements in delay. It's hard to explain so I will take a video next time I play.
The recent 2 or 3 steamvr updates brought these issues back for me. Going back by 2 or 3 updates, I began getting massive freezing when launching steamvr games which goes away after loading at least. The latest alvr version has even more frequent infinitelly increasing latency. The old buffer size worked way better for me but you can't even adjust it as high anymore. Every other setting is same.

I had no chance to test it out much, but following experiences:

the fps decreasing after around 12 minutes did not occur anymore (buffer settings are leaved default)
with buffer "0" ALVR freezes immediately
once I was visited by some friends and showed the quest by using ALVR, there has been frequent bad image and after half a hour ALVR freezed... the reason could be the smartphones of my friends with 5 GHz wlan transmitters... so should be no problem of ALVR
stopping ALVR (VR Server) on the PC caused ALVR (Quest) to freeze (similiar behaviour with oculus link) or only three white dots are showed (loading?!)


Changes to Get-PnPSiteCollectionAppCatalogs

Type

[X] Bug Fix
[X] New Feature
[ ] Sample

Related Issues?
Fixes #2041
What is in this Pull Request ?

Renamed Get-PnPSiteCollectionAppCatalogs to Get-PnPSitecollectionAppCatalog to follow our naming convention
Changed so that Get-PnPSitecollectionAppCatalog now returns our own model
Every returned site will be validated if it still exists and about the actual current URL
Added -ExcludeDeletedSites optional parameter to Get-PnPSiteCollectionAppCatalogs which allows for site collections with App Catalogs that are in the recycle bin to be exluded from the results
Added -CurrentSite optional parameter to Get-PnPSiteCollectionAppCatalogs which allows for checking if the currently connected to site has a site collection App Catalogs provisioned on it

Hey @KoenZomers , lets not introduce breaking changes here.
Lets just return whatever CSOM is returning instead of our own object.
Consider this scenario:
$appCatalogSites = Get-PnPSiteCollectionAppCatalog
$appCatalogSites[0]

Now, if $appCatalogSites[0] has some property, like $appCatalogSites[0].Title that is being used by users, it will be broken.
Same goes for the page, lets keep the URL as it was before.
People do keep that as bookmarks and suddenly they will find that its not working.
The alias is good , once we remove that Alias, we will change the page URL as well


Build feature and Tests

Please note, the build command has been made to work after ignoring the method test_overlap(). As  a temporary measure.

Thanks @cronan03 we will tackle the remaining failing tests in a follow up PR. So that you can focus on the watch feature.


in "Important Notes"

Replace
var container = hot, document.getElementById('hot');
by
var container = document.getElementById('hot');
And thanks a lot for the package!

Thanks for your comment.
Yea, you are right, didn't notice there was an error in the example, was copying from Handsontable docs straight. But I think you would still need hot variable to store the reference to Handsontable, so I will change the code a little bit.
See commit: 7a75085
Since this is a quick fix, I am not going to push to atmosphere as versioning remains to be 0.8.0.
Changes will be reflected on Atmosphere next time when there is a version change.
Thanks!


Create a generic navigation component that can be used to implement the cluster explorer navigation

This generic navigation should be used by both cluster explorer and extensions. The navigation itself should be constructed from the properties that are passed into it.

Closing since we took a different direction.


Add more examples for go templating in alert rules

Right now I'm having difficulties setting up conditionals in an alert like this:
    - alert: DiskError
      annotations:
        description: 'The amount of available disk space is low. Current value: {{ $value | humanize }}.'
        runbook_url: 'url'
      expr: data_volume_available_total  / data_volume_total_total <= 0.1
      for: 5m
      labels:
        severity: '{{- if match "server-" $labels.namespace -}} warning {{- else -}} error {{- end -}}'
        category: '{{- if match "server-" $labels.namespace -}} deployment {{- else -}} infrastructure {{- end -}}'
        server_id: '{{- if match "server-" $labels.namespace -}} {{ reReplaceAll "server-(.*)" "$1" $labels.namespace }} {{- else -}} {{- end -}}'

I see no reason why this shouldn't work, yet the severity, catergory and server_id field are not interpreted at all. And I can't find any documentation or examples on putting conditionals into the template so I have no idea if this is even possible or not.
Would be nice to add some examples.

This seems more a support question than a documentation request, and is also not something we'd have as an example as it's putting policy in rules that better belongs in the AM.
It makes more sense to ask questions like this on the prometheus-users mailing list rather than in a GitHub issue. On the mailing list, more people are available to potentially respond to your question, and the whole community can benefit from the answers provided.


Where is the directory of features,can you supplement

I used four different type of Haar Feature and the total amount of the features is a huge number.
I removed the genereated features cache file because I can upload it onto github with the limit of the bandwidth of my network.
You can get the features  by your self with running the program FaceDetection/trainingAdaBoost.py
From my perspective, I will recommend you to read all about my source code if you want to know everything about the implementation.

Before that,I don't have a careful look at the code.
Now, I will accept your suggestion.
Thank you.


Audio player crashes quit to menu

Quitting to menu crashes program.
pause_player None type on quit to menu.

Fixed by removing call to player in win/lose screens


Update code-generation-in-a-build-process.md

Fix a missing </PropertyGroup>

@JesseTG : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Oops, scratch that. I misread the code block. The formatting was weird, but that in itself deserved a patch.

@JesseTG : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Thanks @JesseTG -- looks good.


Adds tests for lot list

This adds tests absent from the #1411 PR, as well as un-pending'd the live auction view controller test (it was pending because of a problem I had to fix to test the lot list view controller anyway).
Danger will likely complain of no changelog entry, but as it only adds tests I didn't see the need.

Awwww yeah

I think that's because CI was already well-underway by the time I created the PR #lifehack

Cool, looks good

Danger will likely complain of no changelog entry, but as it only adds tests I didn't see the need.

You can add #trivial to the title to make Danger ignore that check 👍


[Bug] Websocket server response empty for first few sends after connected.

In my case, the client would connect to the online websocket server, speak a few word and Done to get the result, the audio duration is usually between 3~10 seconds so the server should response right away after connected to server.
After commit aa48b76, I need to wait/speak much longer to get response. It feels like I have to wait 1 or 2 endpoints so the server can start working.
I guess the problem is caused by setting 0 to -1 in these line but I don't really sure what it does, but changing them back to 0 does fix the problem:
https://github.com/k2-fsa/sherpa-onnx/blob/aa48b76d4b6781266d140f0b4f83c449a07cd579/sherpa-onnx/csrc/online-transducer-greedy-search-decoder.cc#L58-L59
Is this normal or should I set some params to avoid getting empty response at the beginning?

Which model are you using? If you use your own model, what code are you using to train the model?

Which model are you using? If you use your own model, what code are you using to train the model?

I'm using sherpa-onnx-streaming-zipformer-en-2023-06-21 since it has trained on multiple corpus

Thanks! The updated decoder.onnx works just like before!
Does it means I have to re-export my own models if I want to use them after this commit?

Thanks! The updated decoder.onnx works just like before! Does it means I have to re-export my own models if I want to use them after this commit?

Yes, please use
https://github.com/k2-fsa/icefall/pull/1264
to re-export your own model.


Decode unsigned token

Should we decode unsigned token?

what do you need it for?

what do you need it for?

@grausof actually nothing, I faced this problem while playing with some mocked JWTs and I wondered if that could be useful and/or correct.
I digged into JWTs spec and I found this:

To support use cases in which the JWT content is secured by a means
other than a signature and/or encryption contained within the JWT
(such as a signature on a data structure containing the JWT), JWTs
MAY also be created without a signature or encryption.  An Unsecured
JWT is a JWS using the "alg" Header Parameter value "none" and with
the empty string for its JWS Signature value, as defined in the JWA
specification [JWA]; it is an Unsecured JWS with the JWT Claims Set
as its JWS Payload.

So my conclusion is that in theory it might be correct to assume that a JWT with only two parts it's still a valid token (nevertheless we should consider some sort of validation on the alg attribute to be none). However, I see no actual use of that.

what do you need it for?

@grausof actually nothing, I faced this problem while playing with some mocked JWTs and I wondered if that could be useful and/or correct.
I digged into JWTs spec and I found this:

To support use cases in which the JWT content is secured by a means
other than a signature and/or encryption contained within the JWT
(such as a signature on a data structure containing the JWT), JWTs
MAY also be created without a signature or encryption.  An Unsecured
JWT is a JWS using the "alg" Header Parameter value "none" and with
the empty string for its JWS Signature value, as defined in the JWA
specification [JWA]; it is an Unsecured JWS with the JWT Claims Set
as its JWS Payload.

So my conclusion is that in theory it might be correct to assume that a JWT with only two parts it's still a valid token (nevertheless we should consider some sort of validation on the alg attribute to be none). However, I see no actual use of that.
So I close the PR.

what do you need it for?

@grausof actually nothing, I faced this problem while playing with some mocked JWTs and I wondered if that could be useful and/or correct.
I digged into JWTs spec and I found this:

To support use cases in which the JWT content is secured by a means
other than a signature and/or encryption contained within the JWT
(such as a signature on a data structure containing the JWT), JWTs
MAY also be created without a signature or encryption.  An Unsecured
JWT is a JWS using the "alg" Header Parameter value "none" and with
the empty string for its JWS Signature value, as defined in the JWA
specification [JWA]; it is an Unsecured JWS with the JWT Claims Set
as its JWS Payload.

So my conclusion is that in theory it might be correct to assume that a JWT with only two parts it's still a valid token (nevertheless we should consider some sort of validation on the alg attribute to be none). However, I see no actual use of that.
So I close the PR.

Yep 😉
if you take a look at the code there is also the unsecured jwt


Google Classroom Sandbox and API setup

Jira Description
Story
As a developer, I want to be able to extract data from a sandbox of Google Classroom.
Jira Metadata
Key: LMS-4
Epic: n/a
Created: 2020-08-12T17:16:21.000-0500
Reporter: Eric Jansson

Jira Comment
Confirmed with simple classroom pull code:
$ ts-node src/index.ts
Courses:
Advanced Math - 6th Grade<PHONE_NUMBER>05)
Done in 3.99s.
Jira Metadata
Created: 2020-08-17T15:23:22.770-0500
Commenter: Brad Banister


Add better error handling output

May allow resuming from an error.
root@es-scores-staging:~/import-high-scores# ./osu.Server.Queues.ScorePump queue import-high-scores --start-id 3449758
Sourcing from `osu`.`osu_scores_high` for osu starting from 3449758
Inserting into test_solo_scores
Increasing processing rate to 5100 due to latency of 2
Retrieving next 5100 scores from 3449758
Inserting up to 3,502,348 [0 /11] 0 inserted (+0 new 0/s)
ERROR: At least one tasks were faulted. Aborting for safety.
Running batches were processing up to 3502348.

0   3474112 - 3469676: FAILED (One or more errors occurred. (Duplicate entry '0-3474112' for key 'test_solo_scores_legacy_id_map.PRIMARY'))
1   3492035 - 3457612: FAILED (One or more errors occurred. (Duplicate entry '0-3492035' for key 'test_solo_scores_legacy_id_map.PRIMARY'))
2   3453310 - 3476897: FAILED (One or more errors occurred. (Duplicate entry '0-3453310' for key 'test_solo_scores_legacy_id_map.PRIMARY'))
3   3457257 - 3456389: FAILED (One or more errors occurred. (Duplicate entry '0-3457257' for key 'test_solo_scores_legacy_id_map.PRIMARY'))
4   3462622 - 3483014: FAILED (One or more errors occurred. (Duplicate entry '0-3462622' for key 'test_solo_scores_legacy_id_map.PRIMARY'))
5   3489398 - 3465089: FAILED (One or more errors occurred. (Duplicate entry '0-3489398' for key 'test_solo_scores_legacy_id_map.PRIMARY'))
6   3468439 - 3467310: FAILED (One or more errors occurred. (Duplicate entry '0-3468439' for key 'test_solo_scores_legacy_id_map.PRIMARY'))
7   3480195 - 3452862: FAILED (One or more errors occurred. (Duplicate entry '0-3480195' for key 'test_solo_scores_legacy_id_map.PRIMARY'))
8   3473944 - 3462886: FAILED (One or more errors occurred. (Duplicate entry '0-3473944' for key 'test_solo_scores_legacy_id_map.PRIMARY'))
9   3463066 - 3462836: FAILED (One or more errors occurred. (Duplicate entry '0-3463066' for key 'test_solo_scores_legacy_id_map.PRIMARY'))
10  3476689 - 3489360: FAILED (One or more errors occurred. (Duplicate entry '0-3476689' for key 'test_solo_scores_legacy_id_map.PRIMARY'))

System.AggregateException: One or more errors occurred. (Duplicate entry '0-3474112' for key 'test_solo_scores_legacy_id_map.PRIMARY')
 ---> MySqlConnector.MySqlException (0x80004005): Duplicate entry '0-3474112' for key 'test_solo_scores_legacy_id_map.PRIMARY'
   at MySqlConnector.Core.ServerSession.ReceiveReplyAsyncAwaited(ValueTask`1 task) in /_/src/MySqlConnector/Core/ServerSession.cs:line 958
   at MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in /_/src/MySqlConnector/Core/ResultSet.cs:line 43
   at MySqlConnector.MySqlDataReader.ActivateResultSet(CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlDataReader.cs:line 129
   at MySqlConnector.MySqlDataReader.NextResultAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlDataReader.cs:line 81
   at MySqlConnector.MySqlDataReader.CreateAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, IDictionary`2 cachedProcedures, IMySqlCommand command, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlDataReader.cs:line 467
   at MySqlConnector.Core.CommandExecutor.ExecuteReaderAsync(IReadOnlyList`1 commands, ICommandPayloadCreator payloadCreator, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/CommandExecutor.cs:line 56
   at MySqlConnector.MySqlCommand.ExecuteNonQueryAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlCommand.cs:line 282
   at osu.Server.Queues.ScorePump.Queue.ImportHighScores.BatchInserter.Run(HighScore[] scores) in /Users/dean/Projects/osu-queue-score-statistics/osu.Server.Queues.ScorePump/Queue/ImportHighScores.cs:line 327
   --- End of inner exception stack trace ---
root@es-scores-staging:~/import-high-scores#

Closes #83

So, given the numbers in the OP, where would you restart the processor? There's so many numbers there I don't know how to read it.
Retrieving next 5100 scores from 3449758

Inserting up to 3,502,348

Running batches were processing up to 3502348

Duplicate entry '0-3474112' for key

0   3474112 - 3469676
3   3457257 - 3456389

In the OP you couldn't really "recover" – It's a really bad state. In a normal failure you'd hopefully see only one batch fail. This is mostly for myself to work with, and will be case-by-case.
If the goal is to just "continue at any cost" you can resume from the maximum ID of all the processing threads.


Tabs not rendering properly on Introduction page

This is located at: https://openms.readthedocs.io/en/develop/docs/introduction.html

closed by https://github.com/OpenMS/OpenMS-docs/pull/105/commits/c835aa01e6ba3280ee955642681d128c973f8e2f.


Configure URL and HTTP methods of HttpEventSubscription

Now, HTTP function always gets the name of HttpEventSubscription which isn't very flexible. E.g. I can't have two Function Apps with functions with same names because I can't name Function Apps the same. I may have multiple Apps each having a Function called "http", which isn't possible now.

We should use route parameter too.

Here is an example of HTTP binding which is not possible with the current serverless extensions:
{
      "type": "httpTrigger",
      "name": "req",
      "direction": "in",
      "authLevel": "anonymous",
      "route": "{id}",
      "methods": [
        "get"
      ]
    }

Note the route which basically allows to accept a parameter in the URL itself and get the parameter value in the binding data: context.bindingData.id.

While we are here, methods should also be configurable to allow POST requests.

ping @CyrusNajmabadi

So i orignally thought about thsi.  But i don't know why this needs to be on hte binding.  We already pass the user a HttpRequest object that has these values:
    };
    /**
     * Query string parameter keys and values from the URL.
     */
    query: {
        [key: string]: string;
    };
    /**
     * Route parameter keys and values.
     */
    params: {
        [key: string]: string;
    };

Is that not sufficient?

If you don't have it in the binding, the function won't react to a URL like https://myapp.bla/anythinggoeshere but only to https://myapp.bla/functionname.

If you don't have it in the binding, the function won't react to a URL like https://myapp.bla/anythinggoeshere but only to https://myapp.bla/functionname.

Ohhh you mean having a way to do wildcard paths.  Yes, we may need that.  Currently we have that in awsx through the use of a ProxyRoute.  We'd likely need something similar here.  I'll keep this open so we can design it properly.  Thanks!

Yes, they have a simple templating for Function urls. It can be just /{name}, or things like /{year}/{month}/{day}. I got blocked because I can't do wildcards (wanted to accept a key of a document to lookup in the database).


renderWelcomeGif not working

Hi there @alamorre, I've been trying out ChatEngine for the past couple of days and really considering subscribing and using it for an app.
I've been trying to use the renderWelcomeGif without success.
I attach a screenshot of my code so you can tell me if I'm doing anything wrong or if the functionality is not working correctly.

Also, is there a way to include the typing behavior on this ChatFeed? I was able to get it working on react-chat-engine, but not on react-chat-engine-advanced
Thanks!

Also facing the same issue


WIP: add a more dynamic custom dictionary builder

Feature Concept
Provide a simple API to allow end-users to define custom dictionary configs based on existing project words.
Use existing Space/Zoo dictionary:
        $generator = new HumanoID(DictionaryBuilder::{zoo or space}Words(), null, '-', $wordFormat);

Use a custom re-composed dictionary based on space and animal words:
        $customDictionary = [
            ...StarAdjectives::dictionary(),
            'colors' => Colors::all(),
            'animals' => [
                ...Animals::terrestrial(),
                ...Animals::amphibians(),
                ...Animals::arthropods(),
            ],
            'planets' => CelestialBodies::planets(),
        ];
        $generator = new HumanoID($customDictionary, null, '-', $wordFormat);

Why
From a high level the basic idea is simple, we already have a curated list of 2 word sets which include a lot of varying types of words. By classifying those words/terms into smaller subsets, an end-user can "re-compose" the dictionary lists for their project to their own choosing.
This flexibility alone is not the only benefit for end-users of our library. By exposing a simple composition API (mainly new) end-users custom dictionary can exist directly in their code base with no need for a local JSON file. Similarly, this change would remove our vendored JSON file too; both those together have a cool effect of making the execution path more simple. Fully removing the IO to load file contents and json_decode calls
Potential Concerns

CRITICAL: The existing JSON string files must be "re-composed" without changes to them.

Any changes to existing Dictionary files would be considered breaking changes moving forward; this matches how json word files are handled already.
New categories cannot be added to existing Dictionary files without effecting the static::all() method results; as such these are breaking changes too.
The API will inherently be a bit "opinionated" in how we sort/categorize the existing words - we have to be to balance providing expressive options, without going overboard.
The only non-breaking changes to Dictionary files would be adding new ones that do not interact with existing Dictionary files (nor have overlapping words with others).

Using static defined strings in our code vs JSON loaded strings may have performance implications.
Caution needs to be taken when defining Dictionaries - mainly due to DictionaryInterface current contract details, so I'm rethinking that a lot.

The most simple change I'm considering is that I should create a new interface that is less breaking change prone than DictionaryInterface; making that part shine more as a feature of DictionaryInterface not a bug.
The gist being that if a new interface had a simple contract returning (maybe?) the names of static methods, and children classes?

Performance Notes
So far it doesn't slow anything down, add more RAM usage, nor speed things up or reduce anything. That's kinda perfect since we just want this to improve the DX, not as a means to improve/change performance. the api I was inpsired by is here
import { uniqueNamesGenerator, Config, adjectives, colors, animals } from 'unique-names-generator';

const config: Config = {
  dictionaries: [adjectives, colors, animals]
}

const characterName: string = uniqueNamesGenerator(config); // red_big_donkey

Initial Benchmark:
HumanoID> .\vendor\bin\phpbench report --ref=space --report=aggregate
+------------------+----------------------+-----+-------+-----+----------+-----------------+--------+
| benchmark        | subject              | set | revs  | its | mem_peak | mode            | rstdev |
+------------------+----------------------+-----+-------+-----+----------+-----------------+--------+
| SpaceStaticBench | benchCreate          | 0   | 10000 | 5   | 1.294mb  | 46,535.270ops/s | ±2.35% |
| SpaceStaticBench | benchCreate          | 1   | 10000 | 5   | 1.294mb  | 46,238.756ops/s | ±1.36% |
| SpaceStaticBench | benchCreate          | 2   | 10000 | 5   | 1.294mb  | 46,772.082ops/s | ±1.31% |
| SpaceStaticBench | benchCreate          | 3   | 10000 | 5   | 1.294mb  | 31,422.851ops/s | ±1.22% |
| SpaceStaticBench | benchCreate          | 4   | 10000 | 5   | 1.294mb  | 31,463.686ops/s | ±0.48% |
| SpaceStaticBench | benchCreate          | 5   | 10000 | 5   | 1.294mb  | 15,986.676ops/s | ±0.30% |
| SpaceStaticBench | benchCreate          | 6   | 10000 | 5   | 1.294mb  | 16,026.148ops/s | ±1.54% |
| SpaceStaticBench | benchCreate          | 7   | 10000 | 5   | 1.294mb  | 12,199.870ops/s | ±0.52% |
| SpaceStaticBench | benchCreateRand      | 0   | 10000 | 5   | 1.294mb  | 88,206.962ops/s | ±0.81% |
| SpaceStaticBench | benchCreateRand      | 1   | 10000 | 5   | 1.294mb  | 46,260.467ops/s | ±0.69% |
| SpaceStaticBench | benchCreateRand      | 2   | 10000 | 5   | 1.294mb  | 31,405.076ops/s | ±0.57% |
| SpaceStaticBench | benchCreateRand      | 3   | 10000 | 5   | 1.294mb  | 16,001.468ops/s | ±0.81% |
| SpaceStaticBench | benchCreateRand      | 4   | 10000 | 5   | 1.294mb  | 12,383.631ops/s | ±1.38% |
| SpaceStaticBench | benchCreateAndDecode | 0   | 10000 | 5   | 1.294mb  | 34,399.652ops/s | ±0.41% |
| SpaceStaticBench | benchCreateAndDecode | 1   | 10000 | 5   | 1.294mb  | 34,391.193ops/s | ±0.22% |
| SpaceStaticBench | benchCreateAndDecode | 2   | 10000 | 5   | 1.294mb  | 34,769.386ops/s | ±0.83% |
| SpaceStaticBench | benchCreateAndDecode | 3   | 10000 | 5   | 1.294mb  | 23,091.127ops/s | ±0.42% |
| SpaceStaticBench | benchCreateAndDecode | 4   | 10000 | 5   | 1.294mb  | 23,567.007ops/s | ±1.29% |
| SpaceStaticBench | benchCreateAndDecode | 5   | 10000 | 5   | 1.294mb  | 12,269.614ops/s | ±1.12% |
| SpaceStaticBench | benchCreateAndDecode | 6   | 10000 | 5   | 1.294mb  | 12,292.121ops/s | ±0.65% |
| SpaceStaticBench | benchCreateAndDecode | 7   | 10000 | 5   | 1.294mb  | 9,118.242ops/s  | ±1.22% |

| SpaceBench       | benchCreate          | 0   | 10000 | 5   | 1.294mb  | 46,666.742ops/s | ±0.52% |
| SpaceBench       | benchCreate          | 1   | 10000 | 5   | 1.294mb  | 46,355.444ops/s | ±0.40% |
| SpaceBench       | benchCreate          | 2   | 10000 | 5   | 1.294mb  | 46,242.217ops/s | ±0.85% |
| SpaceBench       | benchCreate          | 3   | 10000 | 5   | 1.294mb  | 31,726.416ops/s | ±0.86% |
| SpaceBench       | benchCreate          | 4   | 10000 | 5   | 1.294mb  | 31,587.455ops/s | ±1.81% |
| SpaceBench       | benchCreate          | 5   | 10000 | 5   | 1.294mb  | 16,414.532ops/s | ±1.12% |
| SpaceBench       | benchCreate          | 6   | 10000 | 5   | 1.294mb  | 16,046.979ops/s | ±1.07% |
| SpaceBench       | benchCreate          | 7   | 10000 | 5   | 1.294mb  | 12,150.541ops/s | ±1.62% |
| SpaceBench       | benchCreateRand      | 0   | 10000 | 5   | 1.294mb  | 89,387.784ops/s | ±0.31% |
| SpaceBench       | benchCreateRand      | 1   | 10000 | 5   | 1.294mb  | 46,335.805ops/s | ±0.36% |
| SpaceBench       | benchCreateRand      | 2   | 10000 | 5   | 1.294mb  | 31,422.446ops/s | ±0.71% |
| SpaceBench       | benchCreateRand      | 3   | 10000 | 5   | 1.294mb  | 16,032.582ops/s | ±1.24% |
| SpaceBench       | benchCreateRand      | 4   | 10000 | 5   | 1.294mb  | 12,115.604ops/s | ±1.57% |
| SpaceBench       | benchCreateAndDecode | 0   | 10000 | 5   | 1.294mb  | 34,747.920ops/s | ±1.49% |
| SpaceBench       | benchCreateAndDecode | 1   | 10000 | 5   | 1.294mb  | 35,450.333ops/s | ±2.05% |
| SpaceBench       | benchCreateAndDecode | 2   | 10000 | 5   | 1.294mb  | 35,005.640ops/s | ±1.07% |
| SpaceBench       | benchCreateAndDecode | 3   | 10000 | 5   | 1.294mb  | 23,418.149ops/s | ±1.38% |
| SpaceBench       | benchCreateAndDecode | 4   | 10000 | 5   | 1.294mb  | 23,167.263ops/s | ±0.28% |
| SpaceBench       | benchCreateAndDecode | 5   | 10000 | 5   | 1.294mb  | 12,328.810ops/s | ±2.06% |
| SpaceBench       | benchCreateAndDecode | 6   | 10000 | 5   | 1.294mb  | 12,412.472ops/s | ±1.14% |
| SpaceBench       | benchCreateAndDecode | 7   | 10000 | 5   | 1.294mb  | 9,263.597ops/s  | ±0.41% |
+------------------+----------------------+-----+-------+-----+----------+-----------------+--------+

as mentioned fractionally different - but that's good since it's not the primary goal of the changes.

@caendesilva - You still using HumanoID in some of your projects? Not really ready for full review of the PR but open to RFC style feedback for sure. I think Rob said he'd look soon when he has time too (so not repining him now to not be a bother).
I think my main thoughts on the current PR pushed is that it really lacks flexibility since everything is just a DictionaryInterface. So maybe if I define a new contract/interface like:
interface DictionarySection {
    public static function hasChildren(): bool;

    /**
      *  @return class-string[]
     **/
    public static function children(): array;

    /**
      * Return all the method names possible to call on this class - other than above 2.
      *  @return string[]
     **/
    public static function categories(): array;
}

My biggest 'doubt' (carefully avoiding 'problem', since it's not) with this is whether I like 'hardcoded' dictionaries or prefer keeping the wordlists separated in json files. It may not matter much in terms of performance but I am on the fence whether I like the 'freedom' of json files or the 'neatness' of PHP 'dictionary files'.

@caendesilva - You still using HumanoID in some of your projects?

Not using it in an active project ATM, but am more than happy to do a code review when you're ready. In the meantime, here are some general high level notes as requested:

On the overall concept of this, and in partial response to Rob's 'doubt':

I think having a way for users to add custom dictionaries is great. It makes it so that the IDs can be tailored to the company's style and brand identity.
We (obviously) should still provide a few sets of built-in datasets, as most people won't need a custom option

On the matter of data formats:

I think using JSON files is good here, as that allows easier interoperability with other projects and reuse of their datasets which are probably in JSON.

More specific notes on the API:

I have to say, just looking at the API and the source code makes me want to play with it. It looks fun.
Could you add some more examples of how the user can register new builders, and some example results?

My biggest 'doubt' (carefully avoiding 'problem', since it's not) with this is whether I like 'hardcoded' dictionaries or prefer keeping the wordlists separated in json files. It may not matter much in terms of performance but I am on the fence whether I like the 'freedom' of json files or the 'neatness' of PHP 'dictionary files'.

What I began to realize is that these JSON files (in this repo) are already "hardcoded". Meaning if we changed the content then that changes the function and output too - i.e. breaking changes.
So from that perspective the "sense of freedom" the JSON provide is a false one that's no more mutable than it would be as PHP code. So if we do move from JSON to PHP dictionary builders we can reproduce the existing JSON in a non-breaking manner. While making the existing liability for breaking changes explicit instead of implicit.
Granted, the risk this adds for us is that we can only do this once since we are expanding the API exposed via PHP. So I absolutely understand how these trade-offs can feel like loosing some 'freedom' compared to using JSON files.

What I began to realize is that these JSON files (in this repo) are already "hardcoded".

Initially they were intended as examples.

So from that perspective the "sense of freedom" the JSON provide is a false one that's no more mutable than it would be as PHP code.

Yes, and that's well [documented in the README]:

Don't change your wordlist once you go into production. Imagine reassigning or reordering the value of the values A..F in the hexadecimal system. It will be very hard, if not impossible, to make this work correctly without resulting in incorrectly converted HumanoIDs to ID's or causing ambiguous results etc.

Once you pick any wordlist it doesn't matter if it's a JSON file or a PHP dictionary. But in terms of 'ease of use' to play around with these wordlists (during testing/development) I'm leaning towards JSON. I think it also coneys better that you can have whatever list you want whereas PHP files feel more like "this is what I got, this is what I gotta use".
Still, I'm not saying I insist on JSON files, not at all, I'm just not sure which (of either) is the best way forward.

My biggest 'doubt' (carefully avoiding 'problem', since it's not) with this is whether I like 'hardcoded' dictionaries or prefer keeping the wordlists separated in json files. It may not matter much in terms of performance but I am on the fence whether I like the 'freedom' of json files or the 'neatness' of PHP 'dictionary files'.

What I began to realize is that these JSON files (in this repo) are already "hardcoded". Meaning if we changed the content then that changes the function and output too - i.e. breaking changes.
So from that perspective the "sense of freedom" the JSON provide is a false one that's no more mutable than it would be as PHP code. So if we do move from JSON to PHP dictionary builders we can reproduce the existing JSON in a non-breaking manner. While making the existing liability for breaking changes explicit instead of implicit.
Granted, the risk this adds for us is that we can only do this once since we are expanding the API exposed via PHP. So I absolutely understand how these trade-offs can feel like loosing some 'freedom' compared to using JSON files.

Very good point. With my JSON comment I was just thinking that users should be able to load words from a custom JSON file. Question: What would happen if the wordlist changes? It's gonna break existing database entries right? With this change we would have to include a backwards compatibility mode if that's the case.

Question: What would happen if the wordlist changes? It's gonna break existing database entries right?
It depends on how you use it - if you save the generated HumanoID into the DB on your models as a slug. Then it all kinda keeps working until eventually you generate an ID that overlaps.

If you generate and "decode" HumanoIDs on the fly then it will break everything very fast at worst. Or at best it will cause SEO headaches when your HumanoID based URLs all change; turning old ones into 404s as they come up in search/etc. (As rob pointed out we did make sure to include massive warnings about that issue/risk though).

With this change we would have to include a backwards compatibility mode if that's the case.

Nope - this change is intended to reproduce the existing wordlist behavior exactly.
So it's adding a lot of API surface to the library. But not actually changing any results for any existing users already working from our Space/Zoo wordsets.

What I began to realize is that these JSON files (in this repo) are already "hardcoded".
Initially they were intended as examples.

🤔  That's a fair point I forgot over time.
I guess I could just make a spinoff humanoid-dictonary-builder package to handle this idea. But then that package would include humanoid as a dependency with the existing word lists as "preconfigured examples". Essentially just making it a HumanoID package wrapper.

Question: What would happen if the wordlist changes? It's gonna break existing database entries right?
It depends on how you use it - if you save the generated HumanoID into the DB on your models as a slug. Then it all kinda keeps working until eventually you generate an ID that overlaps.

If you generate and "decode" HumanoIDs on the fly then it will break everything very fast at worst. Or at best it will cause SEO headaches when your HumanoID based URLs all change; turning old ones into 404s as they come up in search/etc. (As rob pointed out we did make sure to include massive warnings about that issue/risk though).

With this change we would have to include a backwards compatibility mode if that's the case.

Nope - this change is intended to reproduce the existing wordlist behavior exactly. So it's adding a lot of API surface to the library. But not actually changing any results for any existing users already working from our Space/Zoo wordsets.

What I began to realize is that these JSON files (in this repo) are already "hardcoded".
Initially they were intended as examples.

🤔 That's a fair point I forgot over time.
I guess I could just make a spinoff humanoid-dictonary-builder package to handle this idea. ~But then that package would include humanoid as a dependency with the existing word lists as "preconfigured examples". Essentially just making it a HumanoID package wrapper.~ Ope, just thought of a more neat spin on that idea...instead of a wrapper with the existing API I've got cooked up. I just make it a static content generation tool that will use the API I've created to generate and save the JSON dictionaries.
This feels a lot nicer because it can further decouple this library from the "state" that ultimately dictates the behavior. Since the end-users should be taking as much ownership of that as possible, especially if they want to deviate from our 2 example word sets.

I think a content generation tool would be great. The proposed code API looks fun to play with, but it implies that the user can change the builder settings at any time. Having something generate a static file seems like a great idea because that doesn't imply that it's changeable.

Thanks for the feedback gents! I'm going to take a break for a bit and pivot to the "static JSON generator" tool idea. That way I can still keep playing with this fun API idea and we don't blur the lines of how this project needs to use the dictionary concept.
Probably will even bake that same idea into the generator tool so that it throws a warning and doesn't generate if it identifies differences. That way it will still be designed with HumanoID in mind, but users wishing to reuse the dictionary files/concept for other things can generate multiple files under varying names.

Thanks for the feedback gents! I'm going to take a break for a bit and pivot to the "static JSON generator" tool idea. That way I can still keep playing with this fun API idea and we don't blur the lines of how this project needs to use the dictionary concept.
Probably will even bake that same idea into the generator tool so that it throws a warning and doesn't generate if it identifies differences. That way it will still be designed with HumanoID in mind, but users wishing to reuse the dictionary files/concept for other things can generate multiple files under varying names.

Sounds like a great plan! Keep us updated :)


10054 error for long-running client-server connections

Describe the bug
I honestly have no clue what it is (even when going on SO), hisock just throws that exception for long running client-server connections.
To Reproduce
I don't know, start a connection and then sleep for 8 hours?


Bug: Videos not properly aligned/ different sizes on 'yoga therapy' page.

What:
Different sizes of the recommended videos on the 'yoga therapy' page.
Image:

How to replicate:

Run the application.
Go to the 'Yoga therapy' page.
See the sdifference between the first and second recommended video.

@bhattabhi013 Is this issue fixed?

seems fine to me

Hi Aditya,
I think this is fixed in the latest commits.


mustMintCurrencyWithRedeemer error

Can I use mustMintCurrencyWithRedeemer without StateMachine?
I have added simple contract
On execution it gives an error, is it and issue or by design?
Error message
[INFO] Slot 1: W1: Balancing an unbalanced transaction:
Tx:
Tx 0dc77fc34257f3b985fc68b5f76331378c5dbb37192bc2576aa88d99dc0594d8:
{inputs:
collateral inputs:
outputs:
mint: Value (Map [(26e543c3bcade32bd3881df86ca6e73eab58f491fa275cf3d84979d5,Map [("tokenName",1)])])
fee: Value (Map [])
mps:
MintingPolicy {

Hi! Thanks for the question!
Yeah, you can use mustMintCurrencyWithRedeemer without StateMachine.
The problem of the provided example is that you are using ForwardingMintingPolicy here (implicitly). You can see it in the definition of mkTypedValidator which uses mkForwardingMintingPolicy:
-- | A minting policy that checks whether the validator script was run
--   in the minting transaction.
mkForwardingMintingPolicy :: ValidatorHash -> MintingPolicy
mkForwardingMintingPolicy vshsh =
    mkMintingPolicyScript
    $ ($$(PlutusTx.compile [|| \(hsh :: ValidatorHash) -> wrapMintingPolicy (forwardToValidator hsh) ||]))
       `PlutusTx.applyCode` PlutusTx.liftCode vshsh

forwardToValidator :: ValidatorHash -> () -> ScriptContext -> Bool
forwardToValidator = ...

The redeemer of forwardToValidator is () and it fails on Integer redeemer.
StateMachine defines it's own MintingPolicy. A simplified excerpt:
{-# INLINABLE checkPolicy #-}
checkPolicy :: () -> Integer -> ScriptContext -> Bool
checkPolicy _ _ _ = True

curPolicy :: MintingPolicy
curPolicy = Scripts.mkMintingPolicyScript $
    $$(PlutusTx.compile [|| Scripts.wrapMintingPolicy (checkPolicy ()) ||])

runTest :: forall w s. Contract w s Text ()
runTest = do
    let redeemer = Redeemer (PlutusTx.toBuiltinData (1 :: Integer))
        tx = (Constraints.mustMintCurrencyWithRedeemer (mintingPolicyHash curPolicy) redeemer "tokenName" 1)

    ledgerTx <- submitTxConstraintsWith @Void (Constraints.mintingPolicy curPolicy) tx
    awaitTxConfirmed $ txId ledgerTx


Adding an httpsInsteadOfGit config option

This new config option provides yet another way to force git requests to use https instead of git.
While git config --global url."https://".insteadOf git:// works well in local development, it is possible that a CI build server may not allow for that configuration, and setting the bower_https_proxy environment variable globally may not be desired to allow for individual project configuration. This new "httpsInsteadOfGit":true option allows for that to be set on a per-project basis.
Note that this is currently possible by defining "https-proxy":"https://github.com" in .bowerrc, so for this pull request I'm just seeking to make that functionality more explicit for those seeking to do that, since it seems to be a common need.

I'm having a hard time seeing the upside of introducing yet another config parameter to force https:// instead of git://. Bower configurations can be done project-to-project basis already.

I'd rather see the documentation updated to explicitly mention this common issue and the solution than yet another config param, @bower/bower-volunteers opinions?

I'd like to see documentation instead too.

Closing, please @JohnRiv you can find the docs repo here: https://github.com/bower/bower.github.io

Thanks for the feedback. While looking for an appropriate place for documentation I came across https://github.com/bower/bower/wiki/FAQ which links to the same Stack Overflow article I mentioned, so I'll add the additional details there

Saw your contribution there, very helpful thankyou!

@JohnRiv Maybe better place is "Troubleshooting" Wiki page?

@sheerun good point, I'll move it over to there


[Improvement][dolphinscheduler-alert]Add project information to email alert message

In the alarm information, there is only the information of workflow granularity, but not the information of project granularity, which may be difficult to find when troubleshooting problems.
告警信息中只有到工作流粒度的信息，并没有到项目粒度的信息，这样可能在排查问题的时候，不太好找
What are the current deficiencies and the benefits of improvement
Add project information to email alert message like project name, project belong user ....
Which version of DolphinScheduler:
-[1.3.3]

我来做这个小需求吧。

我来做这个小需求吧。

I will do it, please assign to me
我来做这个小需求吧。

good job, looking forward to your participation

I will do it, please assign to me
我来做这个小需求吧。

good job, looking forward to your participation

https://github.com/apache/incubator-dolphinscheduler/pull/4412

https://github.com/apache/incubator-dolphinscheduler/pull/4412


[Bug] Inconsistencies about Dependencies

Hey wonderful Firebase folks,
Looks like there are some inconsistencies in the dependencies listed in various places. Could I ask you to clarify what's right?
As an example: Look at Analytics in the release readme vs. firebase_dependencies.gradle. (Both those links are for HEAD at the time of writing.)
You'll notice that for maven, the readme references only com.google.firebase:firebase-analytics (and says Google Play Services is not required), but firebase_dependencies.gradle also lists "com.google.android.gms:play-services-base" as a dependency.
That's just the first one that popped out to me--I'd guess there are more. Maybe worth a broader fix? But also if you know what's right for Analytics, I'd love to hear.
Thanks so much for all you do!
Chris
(ex-Googler)
P.S. This came up while wrapping things for use from Bazel. For more context see #930
P.P.S.: Not following the template for directness and friendliness, since this isn't a code issue you're going to have trouble reproducing. Instead, I'll just link directly to the relevant docs/source.

Hmm, you might be right that the Analytics dependency doesn't actually need play-services-base (it may have in the past). I'll try removing it and see whether our tests still work.
It would definitely be cleaner to switch over to Android Bill-of-Materials, which provides a single version number for the Firebase Android SDK instead of individual version numbers for each dependency.

Thanks, Jon! So to confirm, then, you wouldn't anticipate play-services-base being required for the standard initialization in the docs https://firebase.google.com/docs/analytics/cpp/start#create_and_initialize_the_firebase_app?

Thanks, Jon! So to confirm, then, you wouldn't anticipate play-services-base being required for the standard initialization in the docs https://firebase.google.com/docs/analytics/cpp/start#create_and_initialize_the_firebase_app?

Actually, looking further into this, it does look like we are currently require play-services-base in all situations (it just so happens that many Firebase Android libraries already depend on it for you).
I'm considering this a bug - a fix is in #953, and the BoM update is in #949.

This should be fixed in the previous C++ release, available here: https://github.com/firebase/firebase-cpp-sdk/releases/tag/v9.1.0


Interference character | (Straight line) In trans_choice function

Laravel Version
11.29
PHP Version
8.1
Database Driver & Version
No response
Description
When I use trans_choice and use straight line symbol (|) in the parameters, it causes the sentence structure to be messed up. It seems that Laravel first places the parameters in the sentences and then selects the sentence based on the number parameter in trans_choice. While the correct way is to first select the correct sentence in terms of number, then replace the parameters.
Steps To Reproduce
home.php file:
return [
   'greeting' => '{0} Hello :name|[1,*] Hello :name, you have :count unread messages'
];

Usage:
trans_choice('home.greeting', 0, ['name' => 'Alex | Moi']);

Above code must result in Hello Alex | Moi, But it results to Hello Alex.

@MohammadZarifiyan
try using HTML encoding for the pipe for quick solution
trans_choice('home.greeting', 0, ['name' => 'Alex | Moi']);

You can use a custom placeholder
{!! str_replace('__PIPE__', '|', trans_choice('home.greeting', 0, ['name' => 'Alex __PIPE__ Moi'])) !!}
Above code return your desired result which is : Hello Alex | Moi

Correct me if I’m wrong, but could this be fixed by changing $replace with [] on line 203 of Translator.php? makeReplacements() gets called at the end of the method so we shouldn’t be missing anything. I’m currently abroad on my phone so I can’t check. Is there any purpose to the current double calling of makeReplacements() since line() already calls it?

I don't understand Laravel issues. More than a year ago the same bug was reported: #48127 and closed. I'm happy it's fixed, but I don't get it.
@reneroth Happy days

I don't understand Laravel issues.

It’s a unique approach. It does keep the issues section very slim — honestly most projects have more open issues than can be solved in a lifetime — but at the same time it means real bugs are being closed without being solved. :/
The important learning for me is that while issues get closed easily, PRs also get merged easily, so it might be worth it just putting in a PR for smaller things.


Suggestion: Tongue Detection

Tongue seems to be the only thing missing from mediapipe's suite. Is there any chance of this happening?

MediaPipe has limited resources for new features.  While this is a good idea, we don't foresee any debo area.