MSID: 89520 Version: 2 DOI: 2<IP_ADDRESS>6323

[PLACE MANUSCRIPT AND EDITOR DETAILS HERE WHEN AVAILABLE] See step 3
[PLACE PDF URL HERE WHEN AVAILABLE] See step 7
Step 1. Inform bioRxiv
Who can help: @QueenKraken, @nlisgo, @scottaubrey

[x] Manuscript is in data hub index (https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v2/by-publisher/elife/get-by-manuscript-id?manuscript_id=89520)

Step 2. Create preview of manuscript
Who can help: @fred-atherden, @nlisgo, @scottaubrey

[ ] Manuscript is available for preview (https://prod--epp.elifesciences.org/preview/89520/v2)

[ ] Trigger import for staging: https://prod--epp.elifesciences.org/import
[ ] Sync data folder with s3://prod-elife-epp-data/data
[ ] Trigger import for staging: https://staging--epp.elifesciences.org/import
[ ] Sync data folder with s3://staging-elife-epp-data/data
[ ] Pull request created to enhanced-preprint-data
[ ] Post link to pull request below

Pull request: [PLACE LINK TO PULL REQUEST HERE]
Detailed instructions: https://github.com/elifesciences/enhanced-preprints-data#add-a-manuscript
Step 3: Awaiting public reviews and QC
Who can help: Production team

[ ] QC passed or QC not needed

Who can help: Editorial team

[x] Public reviews available on sciety (https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>6323)
[ ] Manuscript and editor details at the top of this issue (Supplied by Editorial team)
[ ] Reviews returned by EPP - https://prod--epp.elifesciences.org/api/reviewed-preprints/89520/v2/reviews

Example
"msas": "Genetics and Genomics", "Neuroscience"
"msid": "84628"
"version": "1"
"preprintDoi": "10.1101/2<IP_ADDRESS>4241"
"articleType": "Reviewed Preprint"
"status": "Published from the original preprint after peer review and assessment by eLife."

"Reviewed Preprint posted": "2023-01-02"
"Sent for peer review": "2022-10-28"
"Posted to bioRxiv": "2022-11-21" (link: "Go to bioRxiv": "https://www.biorxiv.org/content/10.1101/2<IP_ADDRESS>4241v1")

Editors:
Reviewing Editor
Michael B Eisen
University of California, Berkeley, United States
Senior Editor
Michael B Eisen
University of California, Berkeley, United States

Step 4: Modify manuscripts.json (no PDF)

[ ] Reviewed preprint is published to EPP (https://elifesciences.org/reviewed-preprints/89520)

[ ] Pull request created to enhanced-preprint-client
[ ] Pull request switched to "Ready for review"
[ ] Post link to pull request below

[ ] Request that a doi be registered

[ ] Post link to #enhanced-preprint comment below

Pull request: [PLACE LINK TO PULL REQUEST HERE]
#enhanced-preprint comment thread: [PLACE LINK TO COMMENT HERE]

Instructions to modify manuscripts.json

Visit: https://github.com/elifesciences/enhanced-preprints-client/actions/workflows/publish-manuscript.yaml
Click: Run workflow
Complete the form and click "Run workflow"
A successful run should result in a new pull request at https://github.com/elifesciences/enhanced-preprints-client/pulls
Open the pull request and click the "Ready for review" button to trigger tests
Once the tests pass and you are happy with the changes the PR can be merged

Example pull request: https://github.com/elifesciences/enhanced-preprints-client/pull/334/files
Once the pull request is merged in it should be available a few minutes later.

Request that a doi
Post the following in #enhanced-preprint:
@Fred can you register a doi for https://elifesciences.org/reviewed-preprints/89520

Step 5: Awaiting search reindex

[ ] Reviewed preprint is avaliable on journal homepage (https://elifesciences.org)

The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.

Additional info
If needed, the jenkins pipeline to reindex search can be triggered sooner.
https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 6: Published! Request PDF generation

[ ] Post the link to the PDF url at the top of the issue

[ ] Post link to #enhanced-preprint comment below

#enhanced-preprint comment thread: [PLACE LINK TO COMMENT HERE]
Post the following to the #enhanced-preprint on slack:
@Ryan Dix-Peek please can you generate a PDF for https://elifesciences.org/reviewed-preprints/89520

Step 7: Introduce PDF to data folder and git repo

[ ] PDF is avaliable at https://github.com/elifesciences/enhanced-preprints-data/raw/master/data/89520/v2/89520-v2.pdf

Detailed instructions: https://github.com/elifesciences/enhanced-preprints-data#add-a-pdf
Step 8: Add PDF url to manuscripts.json

[ ] Reviewed preprint PDF is available for download (https://prod--epp.elifesciences.org/reviewed-preprints/89520)

[ ] Pull request created to enhanced-preprint-client
[ ] Pull request switched to "Ready for review"
[ ] Post link to pull request below

[PLACE LINK TO PULL REQUEST HERE]

Instructions to add PDF url to manuscripts.json

Visit: https://github.com/elifesciences/enhanced-preprints-client/actions/workflows/add-pdf-url-to-manuscript.yaml
Click: Run workflow
Complete the form and click "Run workflow"
A successful run should result in a new pull request at https://github.com/elifesciences/enhanced-preprints-client/pulls
Open the pull request and click the "Ready for review" button to trigger tests
Once the tests pass and you are happy with the changes the PR can be merged

Example pull request: https://github.com/elifesciences/enhanced-preprints-client/pull/397/files
Once the pull request is merged in it should be available a few minutes later.

Step 9: Done!

[ ] Kettle is on!

elocations missing from references


Add explanation of the new static site and removal of registration/community dynamic content

This is about the banner at the top of the homepage, right?

Yep, and the domain change.
On Mon, Jul 17, 2017 at 9:06 AM, Raimo Radczewski<EMAIL_ADDRESS>wrote:

This is about the banner at the top of the homepage, right?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/coderetreat/coderetreat.github.io/issues/13#issuecomment-315789762,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACOE-XreHiDqbhc6JncQdGcNFUId_Nbyks5sO4UHgaJpZM4NFdbi
.

Yes.  I have added a link to the blog explaining the NING move, and added the correct domain links to the blog post.


Fix unquoted boolean values

Boolean values need to be quoted or they won't be parsed as strings by the interpreter. It will throw these errors:
ERROR: The Compose file './docker-compose.yml' is invalid because: services.keycloak.environment.KC_HTTP_ENABLED contains false, which is an invalid type, it should be a string, number, or a null
ERROR: The Compose file './docker-compose.yml' is invalid because: services.keycloak.environment.KC_HTTPS_ENABLED contains true, which is an invalid type, it should be a string, number, or a null
ERROR: The Compose file './docker-compose.yml' is invalid because: services.keycloak.environment.KC_HOSTNAME_STRICT contains false, which is an invalid type, it should be a string, number, or a null

Hi @byinarie 👋🏼 This error only appears if you are using an old version of docker compose (ie v1)
v1 output:
santiago@optiplex:~/workspace/reconmap/api$ docker-compose version
docker-compose version 1.29.2, build 5becea4c
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
santiago@optiplex:~/workspace/reconmap/reconmap$ docker-compose up
ERROR: The Compose file './docker-compose.yml' is invalid because:
services.keycloak.environment.KC_HTTP_ENABLED contains false, which is an invalid type, it should be a string, number, or a null

v2 output:
santiago@optiplex:~/workspace/reconmap/reconmap$ docker-compose version
Docker Compose version v2.11.0
santiago@optiplex:~/workspace/reconmap/reconmap$ docker-compose up
[+] Running 2/0
 ⠿ Network reconmap_default   Created                                                                                0.0s
 ⠋ Container rmap-mysql       Creating                                                                                0.0s
 ⠋ Container rmap-api         Creating                                                                                0.0s
 ⠋ Container rmap-agent       Creating                                                                                0.0s
 ⠋ Container rmap-redis       Creating
.....

Please update to the latest docker-compose version and that should get rid of the issue. Thanks!
Here is how can you update:
sudo curl -SL https://github.com/docker/compose/releases/download/v2.11.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose


feat(#41): push to hf

closes #41

PR-Codex overview
This PR adds functionality to push outputs to Hugging Face datasets and introduces a new script for pushing data.
Detailed summary

Added datasets==2.20.0 to requirements.txt
Updated push_data.py script for pushing outputs to Hugging Face datasets

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

@rultor merge

@h1alexbel Done! FYI, the full log is here (took me 14min)


shutdowns giving "TypeError: Cannot redefine property: _token"

When using shutdownCluster or totalShutdown an error occurs:
TypeError: Cannot redefine property: _token
This error is caused by a bug in eris. The bug is fixed in the dev branch of eris. Use abalabahaha/eris#dev. Once eris's dev branch is merged into the master branch eris-fleet's eris dependency will be updated.

Eris was updated to 0.13.2 in eris-fleet release 0.3.0


chore(CI): simplify testing strategy

Re-submission of https://github.com/mysticatea/eslint-plugin/pull/33

I separated the lint job because we get lint errors on windows.

I don't know the detailed cause, but uploading to Codecov doesn't seem to work. I will remove that step.


bug: Solidity-compatible hashes

There is a problem with the example of solidity-compatible hashes. The way it's currently done is that it calls keccak_u256s_be_inputs to hash a span composed of u256 words - however this function expects only full u256 words!
Consider the following:
use debug::PrintTrait;
use keccak::keccak_u256s_be_inputs;

#[test]
fn test_full_world() {
    let input_data: Span<u256> = array![
        0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
    ]
        .span();
    let hashed = keccak_u256s_be_inputs(input_data);

    // Split the hashed value into two 128-bit segments
    let low: u128 = hashed.low;
    let high: u128 = hashed.high;

    // Reverse each 128-bit segment
    let reversed_low = integer::u128_byte_reverse(low);
    let reversed_high = integer::u128_byte_reverse(high);

    // Reverse merge the reversed segments back into a u256 value
    let compatible_hash = u256 { low: reversed_high, high: reversed_low };

    assert(
        compatible_hash == 0xa9c584056064687e149968cbab758a3376d22aedc6a55823d1b3ecbee81b8fb9,
        'wrong hash'
    )
}

#[test]
fn test_partial_word() {
    let input_data: Span<u256> = array![0xAA].span();
    let hashed = keccak_u256s_be_inputs(input_data);

    // Split the hashed value into two 128-bit segments
    let low: u128 = hashed.low;
    let high: u128 = hashed.high;

    // Reverse each 128-bit segment
    let reversed_low = integer::u128_byte_reverse(low);
    let reversed_high = integer::u128_byte_reverse(high);

    // Reverse merge the reversed segments back into a u256 value
    let compatible_hash = u256 { low: reversed_high, high: reversed_low };

    assert(
        compatible_hash == 0xdb81b4d58595fbbbb592d3661a34cdca14d7ab379441400cbfa1b78bc447c365,
        'wrong hash'
    )
}

If you run the tests, you'll notice that it works for the full u256 word (with all bits set) but not for the word that is not full.
This is a bit tricky, but basically what you should do instead is:

Split the u256 words into u64 chunks
If you're hashing multiple words, you need to pack the partially-filled last u64 word of the input n with the first u64 word of the input n+1
This requires counting how many bytes each word actually uses.

See how it's implemented in Alexandria for bytes inputs, or Herodotus for u64-words inputs.

@julienbrs

Start working on it too.

@julio4 kindly assign me this issue

@julio4 where is the best place for me to test the bug?
Can't seem to find it

@julio4 where is the best place for me to test the bug? Can't seem to find it

You need to add a new test that specifically handle the issue

Should I add it under listings/testing_how_to directory?

Should I add it under listings/testing_how_to directory?

This is a bug with the solidity-compatible hashes example, so you should fix the bug and add tests directly in this listing directory.

Hello @julio4 I need little clarity
Am I supposed to replace the existing code on tests.cairo with the code snippet provided above?


pin priority for debian and force flag for kubeadm upgrade

Pin priority is required, without it: any upgrade with apt could break k8s due to an upgrade of docker.
Also during upgrades of kubernetes with kubeadm (test from v1.10.3 to v1.10.4 and to v1.10.5) it failed on both tests, and I had to add --force flag.

ci check this

It is already done in some other merge, merge request is able to be closed now.


Connection GET and build a project

Hi,
I'm needing help to build a project and I'm looking to use this library for my ESP8266 module in my ARDUINO UNO.
I need the arduino reading the DB every time to receive a simple value 0 or 1, I just need to know how to receive this answer.
At the moment I am not able to make a code on the arduino with this library that makes the GET request work, could someone show me a code that would work? Thank you.
My PHP:
<?php
  $servername = "mysql.hostinger.com.br";
  $username = "root";
  $password = "*****";
  $dbname = "esp1";
  $conn = new mysqli($servername, $username, $password);

  header("content-type: application/json");

  $sql = "SELECT  * FROM `u582151594_esp82`.`esp1`";
  $result = $conn->query($sql);
  while($data = $result->fetch_object()) {
   $value = $data->value;
  }

  echo '{"value":';
  echo $value;
  echo '}';

  $conn->close();
?>

The code returns me:
{"value":0}
I need the arduino to read this JSON, parse, and remove this VALUE for me to use in my code.
Some help?
Thankss

Take a look at the library,
https://github.com/interactive-matter/aJson/tree/master/Examples

https://bblanchon.github.io/ArduinoJson/doc/decoding/


feedback: General feedback from trying the package in my app

Description
I am working on an application that takes voice input, and sends raw audio bytes to a transcription service, before some other things (outside of scope of this conversation).
The audio data is expected to be single channel, linear PCM, signed 16-bit data, sampled at 16kHz.
Why I wanted to swap your plugin for in instead of record:

On Android we are plagued with gain issues
The time taken to get access to an open microphone stream on iOS 18 is at 1 second or more
I thought something built with FFI instead of platform channels might simplify things by making them more synchronous
I thought that since this uses a C library (miniaudio) it might be faster, more performant, or more efficient

Results of my spike to swap this plugin in
record code:
    final stream = await recorder.startStream(
      const RecordConfig(
        encoder: AudioEncoder.pcm16bits,
        sampleRate: 16000,
        numChannels: 1,
      ),
    );
    return stream;

Produces:
https://drive.google.com/file/d/1w_QpmPWwZV1yTjkt2X52TGtbkXdm42rL/view?usp=sharing
flutter_recorder code:
    Recorder.instance.init(
      format: PCMFormat.s16le,
      sampleRate: 16000,
      channels: RecorderChannels.mono,
    );
    Recorder.instance.start();

    final stream = Recorder.instance.uint8ListStream.map((e) => e.rawData);
    Recorder.instance.startStreamingData();
    return stream;

Produces:
https://drive.google.com/file/d/1N5pXeOcHr7rtgI_8Q3S_LhWOClISIpRJ/view?usp=sharing
Note:

the .wav files were obtained by importing the raw audio bytes to Audacity and exporting.
the app tested runs on Android, iOS, macOS, and web, but the recordings are from Android.

Not sure if I'm holding it wrong, or if there is some issue with the output with this specific configuration.
Please let me know if there is something I should change or try on my end. Thanks!

Very detailed description! Thank you :)
The stream from the mic comes always as unsigned 8 bit inside an Uint8List whatever format you have initialized the recorder.
So instead of the rawData I think you should do this:
final stream = Recorder.instance.uint8ListStream.map((e) => e..toS16List(from: PCMFormat.s16le));

Let me know if that fixes and if the plugin is more responsive on iOS. Thank you.

I am sending the raw audio bytes to the transcription service so the typesafe wrappers should not make any difference, I don't think?

I am sending the raw audio bytes to the transcription service so the typesafe wrappers should not make any difference, I don't think?

That depends on the service capabilities to convert the pairs u8 data into s16 data. Here the sign is important.
I think it is mandatory to do that. Think of receiving an unsigned byte as 200, but you want that as signed byte:
unsigned 200 = 0xC8
signed 200 = 0x78
you will send 0xC8 instead of 0x72. The same for signed 16 bits.
But anyway I am curious if that conversion is working for you!

That depends on the service capabilities to convert the pairs of u8 data into s16 data. Here the sign is important.
I think it is mandatory to do that. Think of receiving an unsigned byte as 200, but you want that as signed byte:
unsigned 200 = 0xC8 signed 200 = 0x78 you will send 0xC8 instead of 0x72. The same for signed 16 bits.
But anyway I am curious if that conversion is working for you!

Sorry yes of course the values would be different, and I know the service is capable of converting pairs of unsigned 8-bit data to signed 16-bit data, because I was simply forwarding the Uint8List stream exposed from record previously.
I tried your conversion and still I have the same weirdness in the output.
How would be the best way to identify where the weirdness comes from in my case? I could use the .wav recording option and compare to a raw pcm file I import to audacity and export as .wav. Or try to make a minimal reproducible sample?

On another note, on the currently released version, macOS and Android run, but I am getting a compilation error for iOS:
Error (Xcode): Undefined symbol: _AVAudioSessionCategoryAmbient
Error (Xcode): Undefined symbol: _AVAudioSessionCategoryMultiRoute
Error (Xcode): Undefined symbol: _AVAudioSessionCategoryPlayAndRecord
Error (Xcode): Undefined symbol: _AVAudioSessionCategoryPlayback
Error (Xcode): Undefined symbol: _AVAudioSessionCategoryRecord
Error (Xcode): Undefined symbol: _AVAudioSessionCategorySoloAmbient
Error (Xcode): Undefined symbol: _AVAudioSessionInterruptionNotification
Error (Xcode): Undefined symbol: _AVAudioSessionInterruptionTypeKey
Error (Xcode): Undefined symbol: _AVAudioSessionRouteChangeNotification
Error (Xcode): Undefined symbol: _AVAudioSessionRouteChangeReasonKey
Error (Xcode): Undefined symbol: _AudioComponentFindNext
Error (Xcode): Undefined symbol: _AudioComponentInstanceDispose
Error (Xcode): Undefined symbol: _AudioComponentInstanceNew
Error (Xcode): Undefined symbol: _AudioOutputUnitStart
Error (Xcode): Undefined symbol: _AudioOutputUnitStop
Error (Xcode): Undefined symbol: _AudioUnitAddPropertyListener
Error (Xcode): Undefined symbol: _AudioUnitGetProperty
Error (Xcode): Undefined symbol: _AudioUnitGetPropertyInfo
Error (Xcode): Undefined symbol: _AudioUnitInitialize
Error (Xcode): Undefined symbol: _AudioUnitRender
Error (Xcode): Undefined symbol: _AudioUnitSetProperty
Error (Xcode): Undefined symbol: _OBJC_CLASS_$_AVAudioSession
Error (Xcode): Linker command failed with exit code 1 (use -v to see invocation)

Admittedly this is in my application so they could be some conflict there (I have not tried to run the sample app)

You could try to save locally a file containing the received data and see if Audacity can import it correctly. In this case you can write the received rawData.
I made a small example to try on desktop because it uses a File to write data and there is more work to do to save files on a phone. But if Audacity import that file correctly, you can then try to send that file to you server and see the result.

sample:

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter_recorder/flutter_recorder.dart';

void main() async {
  runApp(
    MaterialApp(
      home: Scaffold(
        body: MyWidget(),
      ),
    ),
  );
}

class MyWidget extends StatefulWidget {
  const MyWidget({super.key});

  @override
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  final recorderChannels = RecorderChannels.mono;
  final recorderFormat = PCMFormat.s16le;

  final sampleRate = 16000;
  final recorder = Recorder.instance;
  late final File file;

  @override
  void initState() {
    super.initState();

    Recorder.instance.init(
      format: PCMFormat.s16le,
      sampleRate: 16000,
      channels: RecorderChannels.mono,
    );
    Recorder.instance.start();

    file = File('[YOUR_LOCAL_PATH/test_16000_mono_s16le.pcm');
    if (file.existsSync()) {
      file.deleteSync();
    }

    /// Listen for microphne data.
    recorder.uint8ListStream.listen((chunks) {
      file.writeAsBytesSync(chunks.rawData, mode: FileMode.writeOnlyAppend);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisSize: MainAxisSize.min,
      children: [
        OutlinedButton(
          onPressed: () {
            recorder.startStreamingData();
          },
          child: Text('start streaming'),
        ),
        OutlinedButton(
          onPressed: () {
            recorder.stopStreamingData();
          },
          child: Text('stop streaming'),
        ),
      ],
    );
  }
}

Please let me know.
Also regarding the compilation error for iOS, I have fixed it here

Okay so I could reproduce the issue with the following code.
Sample code

import 'dart:async';
import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_recorder/flutter_recorder.dart' as fr;
import 'package:intl/intl.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
import 'package:record/record.dart' as r;
import 'package:rxdart/rxdart.dart';

void main() async {
  runApp(
    const MaterialApp(
      home: Scaffold(
        body: _Page(),
      ),
    ),
  );
}

class _Page extends StatefulWidget {
  const _Page();

  @override
  State<_Page> createState() => _PageState();
}

enum _Plugin { flutterRecorder, record }

enum _Mode { stream, file }

class _PageState extends State<_Page> {
  static final _dateFormat = DateFormat('yyyy-MM-dd_HH-mm-ss');
  static const _recordConfig = r.RecordConfig(
    encoder: r.AudioEncoder.pcm16bits,
    sampleRate: 16000,
    numChannels: 1,
    autoGain: true,
    echoCancel: true,
    noiseSuppress: true,
    androidConfig: r.AndroidRecordConfig(
      audioSource: r.AndroidAudioSource.voiceCommunication,
    ),
    iosConfig: r.IosRecordConfig(
      categoryOptions: [
        r.IosAudioCategoryOption.defaultToSpeaker,
        r.IosAudioCategoryOption.allowBluetoothA2DP,
      ],
    ),
  );

  late final _flutterRecorder = fr.Recorder.instance;
  late final _recorder = r.AudioRecorder();

  var _plugin = _Plugin.flutterRecorder;
  var _mode = _Mode.stream;
  var _initialized = false;
  var _recording = false;
  StreamSubscription<Uint8List>? _micSubscription;

  @override
  void initState() {
    super.initState();
    _requestPermission();
  }

  void _requestPermission() async {
    switch (defaultTargetPlatform) {
      case TargetPlatform.android:
      case TargetPlatform.iOS:
      case TargetPlatform.macOS:
        _recorder.hasPermission().then((value) async {
          if (value) {
            print('Permission granted');
            _initRecorders();
          } else {
            print('Permission denied');
          }
        });
      default: // no-op
    }
  }

  void _initRecorders() async {
    final frDevices = _flutterRecorder.listCaptureDevices();
    for (final device in frDevices) {
      print(
        'Mic(flutter_recorder): ${device.id} - "${device.name}" ${device.isDefault ? '- (default)' : ''}',
      );
    }

    final rDevices = await _recorder.listInputDevices();
    for (final device in rDevices) {
      print('Mic(record): "${device.id}" - "${device.label}"');
    }

    if (!_flutterRecorder.isDeviceInitialized()) {
      _flutterRecorder.init(
        format: fr.PCMFormat.s16le,
        sampleRate: 16000,
        channels: fr.RecorderChannels.mono,
      );
    }
    if (!_flutterRecorder.isDeviceStarted()) {
      _flutterRecorder.start();
    }

    setState(() {
      _initialized = true;
    });
  }

  Future<void> _disposeRecorders() async {
    if (!_initialized) return;
    _flutterRecorder
      ..stop()
      ..deinit();
    await _recorder.dispose();
  }

  @override
  void dispose() async {
    _micSubscription?.cancel();
    await _disposeRecorders();
    super.dispose();
  }

  void _startRecordingStream() async {
    final File file;
    final Stream<Uint8List> stream;
    final timestamp = _dateFormat.format(DateTime.now());

    switch (_plugin) {
      case _Plugin.flutterRecorder:
        file = await _createFile('${timestamp}_fl_rec_st_16000_mono_s16le.pcm');
        stream = _flutterRecorder.uint8ListStream.map((e) => e.rawData);
        _flutterRecorder
          ..startStreamingData()
          ..filters.autoGainFilter.activate();

      case _Plugin.record:
        file = await _createFile('${timestamp}_rec_st_16000_mono_s16le.pcm');
        stream = await _recorder.startStream(_recordConfig);
    }

    _micSubscription?.cancel();
    _micSubscription = stream
        .bufferTime(const Duration(milliseconds: 100))
        .map(_flattenBuffer)
        .listen((bytes) {
      file.writeAsBytesSync(bytes, mode: FileMode.writeOnlyAppend);
    });
  }

  Uint8List _flattenBuffer(List<Uint8List> buffer) {
    final length = buffer.fold(0, (sum, bytes) => sum + bytes.length);
    final flattened = Uint8List(length);

    var offset = 0;
    for (final bytes in buffer) {
      flattened.setRange(offset, offset + bytes.length, bytes);
      offset += bytes.length;
    }

    return flattened;
  }

  void _startRecordingFile() async {
    final timestamp = _dateFormat.format(DateTime.now());

    switch (_plugin) {
      case _Plugin.flutterRecorder:
        final file = '${timestamp}_fl_rec_file_16000_mono_s16le.wav';
        final path = '${(await _resolveAppDirectory()).path}/$file';
        _flutterRecorder.startRecording(completeFilePath: path);

      case _Plugin.record:
        final file = '${timestamp}_rec_file_16000_mono_s16le.wav';
        final path = '${(await _resolveAppDirectory()).path}/$file';
        await _recorder.start(_recordConfig, path: path);
    }
  }

  void _onStart() {
    switch (_mode) {
      case _Mode.stream:
        _startRecordingStream();
      case _Mode.file:
        _startRecordingFile();
    }

    setState(() {
      _recording = true;
    });
  }

  void _onStop() async {
    _micSubscription?.cancel();
    _micSubscription = null;

    switch (_plugin) {
      case _Plugin.flutterRecorder:
        switch (_mode) {
          case _Mode.stream:
            _flutterRecorder.stopStreamingData();
          case _Mode.file:
            _flutterRecorder.stopRecording();
        }
        _flutterRecorder.stop();

      case _Plugin.record:
        await _recorder.stop();
    }

    setState(() {
      _recording = false;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(32),
      child: Column(
        mainAxisSize: MainAxisSize.max,
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Text('Recording: ${_recording ? '🟠' : '⚪'}'),
          SegmentedButton(
            segments: const [
              ButtonSegment<_Plugin>(
                value: _Plugin.flutterRecorder,
                label: Text('flutter_recorder'),
              ),
              ButtonSegment<_Plugin>(
                value: _Plugin.record,
                label: Text('record'),
              ),
            ],
            onSelectionChanged: (plugins) {
              setState(() => _plugin = plugins.single);
            },
            selected: {_plugin},
          ),
          SegmentedButton(
            segments: const [
              ButtonSegment<_Mode>(
                value: _Mode.stream,
                label: Text('stream'),
              ),
              ButtonSegment<_Mode>(
                value: _Mode.file,
                label: Text('file'),
              ),
            ],
            onSelectionChanged: (modes) {
              setState(() => _mode = modes.single);
            },
            selected: {_mode},
          ),
          Row(
            mainAxisSize: MainAxisSize.max,
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              OutlinedButton(
                onPressed: _initialized && !_recording ? _onStart : null,
                child: const Text('Start'),
              ),
              OutlinedButton(
                onPressed: _initialized && _recording ? _onStop : null,
                child: const Text('Stop'),
              ),
            ],
          ),
        ],
      ),
    );
  }
}

Future<File> _createFile(String name) async {
  final directory = await _resolveAppDirectory();
  final file = File(p.join(directory.path, name));
  print('File created: "${file.path}"');
  return file;
}

Future<Directory> _resolveAppDirectory() async {
  final path = await _resolveAppDirectoryPath();
  final directory = Directory('$path/');

  if (await directory.exists()) {
    return directory;
  } else {
    return await directory.create(recursive: true);
  }
}

Future<String> _resolveAppDirectoryPath() async {
  if (!kIsWeb && defaultTargetPlatform == TargetPlatform.android) {
    return (await getApplicationSupportDirectory()).path;
  }
  if (!kIsWeb && defaultTargetPlatform == TargetPlatform.iOS) {
    return (await getLibraryDirectory()).path;
  }
  if (!kIsWeb && defaultTargetPlatform == TargetPlatform.macOS) {
    final libraryPath = (await getLibraryDirectory()).path;
    final packageName = (await PackageInfo.fromPlatform()).packageName;
    return p.join(libraryPath, 'Application Support', packageName);
  }
  throw UnsupportedError('Platform: ${defaultTargetPlatform.name}');
}

After doing a bit of research, my guess as to why I have this choppiness with flutter_recorder is because arbitrary 100ms buffering must not align well with the frame boundaries, while maybe for some reason this happens to align well with record.
@alnitak do you have any suggestion how to buffer the data appropriately so that no frames are split across buffer boundaries?
The reason I am buffering in the first place is because I don't necessarily mind writing every sample/frame to a local file, but because I need to send those to a server, it makes sense to batch them up a bit.

Maybe I have some thoughts regarding this. The AudioDataContainer usually must be read and managed while it is delivered, if you store AudioDataContainer and read its content later, what you will read will be in fact the latest buffer. This is an optimization I made to speed up the overall jobs.
You could try to do the following:
replace these lines (from line 68 to 70 included) with the following:
final copied =
        Uint8List.fromList(data.cast<ffi.Uint8>().asTypedList(dataLength));
uint8ListController.add(AudioDataContainer(copied));

this will copy the incoming data and you can store AudioDataContainer for example in a List.
Let me know if this helps.

@alnitak thanks for the answer, but I think I was using the wrong tool for the job with RxDart.bufferTime.
I was able to get this working with BytesBuilder.
Went from:
    _micSubscription?.cancel();
    _micSubscription = stream
        .bufferTime(const Duration(milliseconds: 100))
        .map(_flattenBuffer)
        .listen((bytes) {
      file.writeAsBytesSync(bytes, mode: FileMode.writeOnlyAppend);
    });

  Uint8List _flattenBuffer(List<Uint8List> buffer) {
    final length = buffer.fold(0, (sum, bytes) => sum + bytes.length);
    final flattened = Uint8List(length);

    var offset = 0;
    for (final bytes in buffer) {
      flattened.setRange(offset, offset + bytes.length, bytes);
      offset += bytes.length;
    }

    return flattened;
  }

To:
    final buffer = BytesBuilder();
    _micSubscription?.cancel();
    _micSubscription = stream.listen((bytes) {
      print('Stream: ${bytes.length} bytes');
      buffer.add(bytes);
      while (buffer.length >= _chunkSize) {
        final bufferBytes = buffer.toBytes();
        final chunk = Uint8List.sublistView(bufferBytes, 0, _chunkSize);
        print('Chunk: ${chunk.length} bytes');
        file.writeAsBytesSync(chunk, mode: FileMode.writeOnlyAppend);
        final remainder = Uint8List.sublistView(bufferBytes, _chunkSize);
        buffer.clear();
        buffer.add(remainder);
      }
    });

Audio now sounds perfect and I can be sure of the size of audio fragment I am writing to the disk or the server!
Thank you for your help

That problem using RxDart.bufferTime was exactly the problem a guy pointed me (via email) and let me think about your problem. He resolved with my previous suggestion.
I am now thinking if it's worth to change that code.

Because I don't think you can prevent this issue entirely on your end if people use RxDart.buffer..., I see a couple of options:

allow consumers specify either the length of audio fragment or the duration between fragments, so that they don't need to use RxDart.buffer...

educate them in the docs not to use this approach and prefer to manage the bytes using an approach like yours or mine

For me I had to print the size to find out it was 2048 bytes per fragment, but I did not know if this was guaranteed in any way, or on other devices or platforms.


Update outbound link to Coil

Currently the link takes a visitor to https://coil.com/learn-more
@fruehle requests we update this to https://coil.com/ as a better experience for users.

COIL-156


Installation failed (The system requirements are not satisfied.)

Version: 7.7.0
Output folder: C:\Program Files\Intel\HAXM
Extract: checktool.exe... 100%
Execute: C:\Program Files\Intel\HAXM\checktool.exe --verbose
CPU vendor          *  GenuineIntel
Intel64 supported   *  Yes
VMX supported       -  No
VMX enabled         -  No
EPT supported       -  No
NX supported        *  Yes
NX enabled          *  Yes
Hyper-V disabled    -  No
OS version          *  Windows 10.0.22000
OS architecture     *  x86_64
Guest unoccupied    *  Yes. 0 guest(s)

Thanks for your feedback. Could you run below command to disable Hyper-V in an elevated Command Prompt and then restart Windows?
> bcdedit /set hypervisorlaunchtype off

Im using this command but its not help me at windows 11 , im change the isolate core
of windows its work at me

I have the same problem!

The installation is still failing on Windows 11. Tried many solutions from YouTube videos but none of them are working.

@KayvanShah1 ,seems you did not disable hyperV/VBS on Windows 11.  Please also tried below cmd and reboot your PC.

bcdedit /set hypervisorlaunchtype off
If it still could not work, please check your VBS status, and disable VBS via 'Group Policy'->"Administrative Templates"->"System"->"Device Guard"->"Turn On Virtualization Based Security"--> select 'Disable'.

Thanks for your feedback. Could you run below command to disable Hyper-V in an elevated Command Prompt and then restart Windows?
> bcdedit /set hypervisorlaunchtype off

it worked，thank you！谢谢！


help for sub sub commands

Make sure we get the help
$ tmcli create source
2022/10/05 09:35:46 list sources: yaml: unmarshal errors:
  line 1: cannot unmarshal !!str `Not Found` into crd.CRD

Looks fixed.


Ability to set itemID

i saw that the is generated using the number of items, is there any way to make a setItemId?
why:
in my nav drawer, user can create ITEMS (categories) and than add some items to this categories, in this way that the Sublime do, all the time will have a new ID if i delete or add another item, this make a big mess in the categories, since its linked produts -> itemID(categorie)

SublimeMenu requires that its menu items should hold unique IDs - even the Separator items have unique IDs.
If I do add the option for setting item ID, how will you ensure its uniqueness?

im not really checking it, i generate the ID from a random btw 10000000 and 9999999, since each user in my case will generate at the maximum of 10, so the risk is the minimum
i understand what are you saying! maybe you could add somekind of "TAG" like normal views .setTag
thank you

My menu model has unique id's that I'd like to use as menu-item ids.
Couldn't you just throw an error if they aren't unique?
Otherwise I'll have to maintain a map to translate the generated  menu-item id to the id in my menu model so I know which menu was clicked on.

If I could attach a click listener to a menu-item that would work.

@danbrough I like your suggestion of throwing an exception in case the given ID isn't unique.
If I understand you correctly, this would mean all the add* methods would be overloaded to provide an additional argument - the ID. API would be:

the add* methods without the ID argument would use SublimeMenu.generateUniqueItemID() method

the add* methods with the ID argument would throw an exception if the given ID already exists. Current implementation stores the MenuItems in an ArrayList. This would require a traversal on every add* operation. Perhaps SublimeMenu should maintain a Map to store IDs - all add* and remove* methods will require changes in this case

Do these changes meet your requirement?

It would work, but it would be nasty to resolve if one of my id's conflicted with a generated id.
I can always explicitly set every id rather than let some be generated and then get caught out trying to use an id that conflicts with one that was generated.
I can already do this if I use xml to define the MenuItems.
So it would make sense to do as you suggested and make the protected methods public so I can do this programmatically.
thanks!


Fix tile server location in lab UI

Overview
This fixes a bug where the correct tile server location is not
used when requesting tiles in the Lab UI.
Closes #1654

Pretty trivial and this need to get on prod asap so I'm going to merge this


VS not responsive while installing packages

I installed ggvis, and also Rcmdr, and during both, I wasn't able to do anything in VS (clicking on windows, menus didn't do anything) until install was complete (which took maybe 1 minute - they depend on a lot of packages).

There is usually a visible progress in REPL. I think we can look at this later.

Pretty old, no user complaints


No way to get joke by ID (overalpping endpoints)

The endpoints "Get number of random jokes by type" and "Get joke by type and id" are overlapped and the latter one is not implemented in the code (while the former one is), so I think it should be either implemented or removed from the README

@LucaBlackDragon This was a silly mistake from my side, thanks for pointing out. Rather than changing everywhere else, I prefer keep this endpoint the other way
I changed the endpoint from /jokes/{type}/{id} to /joke/{type}/{id}. I hope this will help
Also will change documentation in frontend soon

Thanks for pointing out


fix(test): missing auth on tests

SUMMARY
Fixes some tests that were successful but were actually testing on a non authenticated user context (they were supposed to run with admin). This surfaced while cherry picking for 0.38.
ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Changes UI
[ ] Requires DB Migration.
[ ] Confirm DB Migration upgrade and downgrade tested.
[ ] Introduces new feature or API
[ ] Removes existing feature or API

Nice catch 👍 LGTM, but I wonder if we should standardize on how self.login is called. It appears the test codebase is mostly calling self.login("admin"), which is the exact same as self.login() due to defaults. I wonder if we should just make it mandatory to specify the username?

Yes, agree we should standardize, I'm planning on making of bunch of PR's to refactor tests to use pytest fixtures also, it may make sense to include that on those.


Validate feature names are crates.io friendly.

Closes rust-lang/cargo#5554
Relates to rust-lang/crates-io-cargo-teams#41

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @nrc (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see the contribution instructions for more information.

Thanks for the PR! I'm personally somewhat wary to do this though because these restrictions are enforced by crates.io, not Cargo, so what happens if crates.io changes? It could take quite some time before Cargo is updated to align with the new changes.
I think that there was also a lot of discussion about perhaps sharing dependencies, but IIRC that never really reached a conclusion?

Thanks for the PR!

👍

I'm personally somewhat wary to do this though because these restrictions are enforced by crates.io, not Cargo, so what happens if crates.io changes? It could take quite some time before Cargo is updated to align with the new changes.

Mmm.  Would a better approach maybe include a test upload to crates.io?  (Although this would introduce a new point of spurious failures for CI builds trying to cargo publish --dry-run...)

I think that there was also a lot of discussion about perhaps sharing dependencies, but IIRC that never really reached a conclusion?

https://github.com/rust-lang/crates-io-cargo-teams/issues/41 had some discussion about possibly sharing dependencies, but the answer for a lot of the metadata in there seemed to be "nope, this can't be easily shared", and some uncertainty as to how much value there actually is to sharing what can be shared.
I'm also not sure if it's worth the engineering time to fix many of the more minor/trivial metadata issues listed there, when you can simply modify the Cargo.toml and resubmit.  Features specifically seem to be the reoccuring (initial motivation for both linked issues), less trivial (changes to source code, build scripts, and possibly already published code generators) footgun.  Adding a shared dependency to fix just features seems even less worthwhile.
That said, I could easily be missing some context here - and test uploads would moot all of this.

I'm personally a fan of the "dry run publish" endpoint on crates.io, although that would require coordination from crates.io and likely more implementation work than this.
In general though @ehuss has done a lot of categorization work on https://github.com/rust-lang/crates-io-cargo-teams/issues/41 and I think that it's not quite at a point where we can commit one way or another to this solution.

Closing this PR for now, I'll mention the dry run publish endpoint idea in rust-lang/crates-io-cargo-teams#41 .


Simplify GitHub Actions using install-poetry

Looks like this could simplify things a lot: https://github.com/snok/install-poetry

#2873  Cleaned the Action and uses https://github.com/snok/install-poetry
I'd say this could be closed as well! :)


delete task should also remove environment (?)

or shouldn't it?

Will we have a custom environment for each task with its own dependencies?
At least for the core tasks, we currently use a shared set of dependencies and thus could use the same environment for (currently) all (and even in the future probably many) tasks.


feat(permit): calculate permit info

Summary
Part of #293
Using @cowprotocol/permit-utils, added scripts to fetch permitInfo based on token lists.
Ran it for mainnet, gnosis chain and goerli with our own default tokens lists.
Also ran it for mainnet on uniswap and 1inch default token lists.
The results are in src/public/PermitInfo.<chain id>.json

Great job! thanks for addressing the comments


Join for dynamic entity path alias, querydsl-sql needs implementation

Closes #1936

Added 4 join related method implementations: join, innerJoin, fullJoin and rightJoin for dynamic query building, which would be without code generation.
The fix will solve the implementation required to build a join clause

What it solves:
SQLTemplates templates = MySQLTemplates.builder().printSchema().build();
Configuration configuration = new Configuration(templates);
configuration.setUseLiterals(true);
SQLQueryFactory queryFactory = new SQLQueryFactory(configuration, sqlDataSource); //DataSource sqlDataSource

Path<Object> customerPath = new PathBuilder<Object>(Object.class, "customer");
SQLQuery<?> sqlQuery = queryFactory.from(customerPath.as("c"));

PathBuilder<Object> orderPath = new PathBuilder<Object>(Object.class, "order");
Path<Object> aliasPath = new PathBuilder<Object>(Object.class, "o");

sqlQuery = sqlQuery.innerJoin(orderPath, aliasPath); // new innerJoin method implemented

sqlQuery = sqlQuery.select(SQLExpressions.all);
System.out.println(sqlQuery.getSQL().getSQL());

Will print: select * from customer as c inner join order as o

I added some comments on the interface methods.
Right now, only the new methods are added, which compiles and verifies fine.
We also need a test (preferably a few), using those new methods, to actually have some coverage.
If you add a few in SelectBase, like these They will be picked up in the various suites.
Something close to your snippet in the Pull Request sounds fine.

@Shredder121 Have added several test cases, which I thought would best fit in already existing implementations of test cases which point for dynamic path along side other things. (SQLSerializerTest)
Also, thanks for letting me know about the Closes key.


BoundServiceAccountTokenVolume refresh token with EKS 1.21

Describe the bug
Hi,
Kubernetes version 1.21 graduated BoundServiceAccountTokenVolume feature [1] to beta and enabled it by default. This feature improves security of service account tokens by requiring a one hour expiry time, over the previous default of no expiration. This means that applications that do not refetch service account tokens periodically will receive an HTTP 401 unauthorized error response on requests to Kubernetes API server with expired tokens.
In our kubernetes audit logs we see that fluentd still using stale tokens
annotations.authentication.k8s.io/stale-token | subject: system:serviceaccount:logging:fluentd-forwarder, seconds after warning threshold: 53577
-- | --

What I understand, that should be fixed by upgrading kubernetes client SDK to latest release as following
* Go v0.15.7 and later
* Python v12.0.0 and later
* Java v9.0.0 and later
* Javascript v0.10.3 and later
* Ruby master branch
* Haskell v<IP_ADDRESS>

What did you expect to happen?
Fluentd to support BoundServiceAccountTokenVolume refresh token after upgrading to k8s 1.21
To Reproduce
install fluentd in kubernetes/eks cluster with version >= 1.21 and check the kubernetes audit logs for stale-token
Expected behavior
should have fixed the stale-token issue.
Your Environment
- Fluentd version: v0.3.7 (image : 1.14.6-debian-10-r49)
- Kubermetes/EKS :  v1.21

Your Configuration
Using image: 1.14.6-debian-10-r49

Your Error Log
annotations.authentication.k8s.io/stale-token | subject: system:serviceaccount:logging:fluentd-forwarder, seconds after warning threshold: 53577

Additional context
No response

+1 to this.

Hi,
I face the same issue.

Hello, Facing the same issue.

To Reproduce
install fluentd in kubernetes/eks cluster with version >= 1.21 and check the kubernetes audit logs

Please describe the detail of the steps to reproduce what you did.
Fluentd core itself doesn't aware k8s. k8s integration of Fluentd is completely done by third-party plugins, and they aren't controlled by our organization. So probably you need to forward your report to somewhere (fluent-plugin-kubernetes_metadata_filter?).

Your Environment
- Fluentd version: v0.3.7 (image : 1.14.6-debian-10-r49)
- Kubermetes/EKS :  v1.21

We don't aware such version of Fluend or Docker container.
Probably you use a docker container which is maintained by other organization (here?).

We'll continue this issue at https://github.com/fluent/fluentd-kubernetes-daemonset/issues/1361

This issue has been addressed by fluent-plugin-kubernetes_metadata_filter: https://github.com/fabric8io/fluent-plugin-kubernetes_metadata_filter/pull/337
Please use fluent-plugin-kubernetes_metadata_filter v2.11.1 or later.


eos_cli_conf_gen: maintenance: interface profiles option shutdown not rendered to cli

Issue Summary
Maintenance interface profiles offer two options: rate-monitoring and shutdown
maintenance:
  interface_profiles:
    < interface_profile_1 >:
      rate_monitoring:
        load_interval: < seconds >
        threshold: < kbps >
      shutdown:
        max_delay: < seconds >

When using the following yaml config the shutdownoption is not rendered into cli.
maintenance:
  interface_profiles:
    MM_Prof_Downlinks:
      shutdown:
        max_delay: 3

I cannot find any part for shutdownin the J2 file https://github.com/aristanetworks/ansible-avd/blob/devel/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/maintenance.j2
Which component(s) of AVD impacted
eos_cli_config_gen
How do you run AVD ?
Ansible CLI (with virtual-env or native python)
Steps to reproduce

maintenance:
  interface_profiles:
    MM_Prof_Downlinks:
      shutdown:
        max_delay: 3

Relevant log output
No response
Contributing Guide

[X] I agree to follow this project's Code of Conduct

@daanvdsanden Would you mind having a look at this please?

For some reason I forgot the shutdown max delay. I added a pull request...


Update docs with Mobile client version requirement for QoS

Per mobility EEE in PG, this was added in 6.17 version of the mobile clients. Please reach out to me directly for any reference documentation and to link you over to the EEE if necessary.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: c2f5a97d-6e1c-d26a-8b51-7f8c73e72f9a
Version Independent ID: bfac7530-39f1-70eb-ab55-c96cbe45b180
Content: Enabling QoS for devices that are not based on Windows
Content Source: Skype/SfbServer/manage/network-management/qos/enabling-qos-for-devices-that-are-not-based-on-windows.md
Product: skype-for-business-itpro
GitHub Login: @jambirk
Microsoft Alias: jambirk

@AndreaBarr I can work on this.

@khorne3 I got direction to have Crystal work on this one.
@CrystalThomasMS I was directed by James to have you take this one since you were the one who originally worked on it.

@NicholasBurkhammer, can you tell me what specific changes need to be made to the documentation?

I’ll defer to @Premal<EMAIL_ADDRESS>who is the EEE with the PG for mobile clients.
@Premal, this is related to explicitly stating which clients, versions, etc., need to be documented in documentation.
Note:  I will be out of the office on holiday 12/19/2018-12/25/2018.  During this time I will not have access to email.  If you need assistance while I am out of the office, contact your account team or Product Support Services to request reassignment if necessary.  Due to current volume, any reassignment requests are expected to take several business days to complete.
Regards,
Nicholas Burkhammer
Microsoft ● Unified Communications ● Support Escalation Engineer
Email: nichburk<EMAIL_ADDRESS>Phone: +1<PHONE_NUMBER>
Hours: Monday-Friday 0900-1800 ET
Manager ● Craig Fischer ●<EMAIL_ADDRESS>[SummitAward_2018-OutlookSign]
From: Crystal Thomas<EMAIL_ADDRESS>Sent: Tuesday, December 18, 2018 11:41 AM
To: MicrosoftDocs/OfficeDocs-SkypeForBusiness<EMAIL_ADDRESS>Cc: Nicholas Burkhammer<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/OfficeDocs-SkypeForBusiness] Update docs with Mobile client version requirement for QoS (#1245)
@NicholasBurkhammerhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FNicholasBurkhammer&data=02|01|nichburk%40microsoft.com|1288fc784e2948210ebb08d66507a90c|72f988bf86f141af91ab2d7cd011db47|1|0|636807480943649912&sdata=b1fpVG1ZzEtUiHIZJCx2noZu3p7xKjT1NH4D%2BaEAd2k%3D&reserved=0, can you tell me what specific changes need to be made to the documentation?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2FOfficeDocs-SkypeForBusiness%2Fissues%2F1245%23issuecomment-448286187&data=02|01|nichburk%40microsoft.com|1288fc784e2948210ebb08d66507a90c|72f988bf86f141af91ab2d7cd011db47|1|0|636807480943649912&sdata=TdbkmIUQDCNiT2uS26YXeXu0QGfj%2F3BGgMXaOJjGxoo%3D&reserved=0, or mute the threadhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAp0-trdgT_p2VV5vMO38t1IZqyA4hv-Fks5u6Rq4gaJpZM4ZTq1G&data=02|01|nichburk%40microsoft.com|1288fc784e2948210ebb08d66507a90c|72f988bf86f141af91ab2d7cd011db47|1|0|636807480943659917&sdata=3G7dbs9Qh%2BsNgYP6IvPmDlD0ZtUH%2BhoU%2FhnjpW3kVE8%3D&reserved=0.

@CrystalThomasMS

@CrystalThomasMS Hi Crystal, any updates on this?

Sorry, it's not clear to me what this work item is. It looks like a request for some sort of documentation change was made by @NicholasBurkhammer, who deferred to  @premal<EMAIL_ADDRESS>but I don't see any further discussion or clarification on the requested change and/or addition. Can you clarify what the work being requested is? I'm not familiar with the content, other than having formatted and published it late last year.

It was to add mobile client versions that started supporting QoS because a couple of colleagues had cases regarding this.  We had to RFC it to Premal.  Since there are multiple mobile client versions, it is recommended to reach out to Premal with the PG to obtain the authoritative information.
Regards,
Nicholas Burkhammer
Microsoft ● Unified Communications ● Support Escalation Engineer
Email: nichburk<EMAIL_ADDRESS>Phone: +1<PHONE_NUMBER>
Hours: Monday-Friday 0900-1800 ET
Manager ● Craig Fischer ●<EMAIL_ADDRESS>[SummitAward_2018-OutlookSign]
From: Crystal Thomas<EMAIL_ADDRESS>Sent: Friday, May 3, 2019 2:03 PM
To: MicrosoftDocs/OfficeDocs-SkypeForBusiness<EMAIL_ADDRESS>Cc: Nicholas Burkhammer<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/OfficeDocs-SkypeForBusiness] Update docs with Mobile client version requirement for QoS (#1245)
Sorry, it's not clear to me what this work item is. It looks like a request for some sort of documentation change was made by @NicholasBurkhammerhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FNicholasBurkhammer&data=01|01|nichburk%40microsoft.com|9e766b70191046fba07b08d6cff1a210|72f988bf86f141af91ab2d7cd011db47|1&sdata=OCicWbgTL1c6N4S5ywRkR%2F2uh3RkLhWY6juDTIzJv7E%3D&reserved=0, who deferred to @premalhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpremal&data=01|01|nichburk%40microsoft.com|9e766b70191046fba07b08d6cff1a210|72f988bf86f141af91ab2d7cd011db47|1&sdata=8EJpwtSwVfvAU0tCggA3eSxTracQZA0zgSSDp13IiVQ%3D&reserved=0<EMAIL_ADDRESS>but I don't see any further discussion or clarification on the requested change and/or addition. Can you clarify what the work being requested is? I'm not familiar with the content, other than having formatted and published it late last year.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2FOfficeDocs-SkypeForBusiness%2Fissues%2F1245%23issuecomment-489187015&data=01|01|nichburk%40microsoft.com|9e766b70191046fba07b08d6cff1a210|72f988bf86f141af91ab2d7cd011db47|1&sdata=IZjxHavNFKh59Qgosju3KfPBgi29ozIOfsYdW534WH0%3D&reserved=0, or mute the threadhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKOT5NSCFKIC73YPP3SEEYDPTR46VANCNFSM4GKOVVDA&data=01|01|nichburk%40microsoft.com|9e766b70191046fba07b08d6cff1a210|72f988bf86f141af91ab2d7cd011db47|1&sdata=tPMLiZS7%2BaocUsb8YFuFSsWFA2ZI5GNOuhxnRc1X5Y0%3D&reserved=0.

Thanks, Nicholas.
@Premal<EMAIL_ADDRESS>can you provide the information mentioned by Nicholas below? This is in regard to the following article:
Enabling QoS for devices that are not based on Windowshttps://docs.microsoft.com/en-us/skypeforbusiness/manage/network-management/qos/enabling-qos-for-devices-that-are-not-based-on-windows
Thank you,
Crystal
From: Nicholas Burkhammer<EMAIL_ADDRESS>Sent: Monday, May 6, 2019 6:16 AM
To: MicrosoftDocs/OfficeDocs-SkypeForBusiness<EMAIL_ADDRESS>Cc: Crystal Thomas (Steyer Associates Inc<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/OfficeDocs-SkypeForBusiness] Update docs with Mobile client version requirement for QoS (#1245)
It was to add mobile client versions that started supporting QoS because a couple of colleagues had cases regarding this. We had to RFC it to Premal. Since there are multiple mobile client versions, it is recommended to reach out to Premal with the PG to obtain the authoritative information.
Regards,
Nicholas Burkhammer
Microsoft ● Unified Communications ● Support Escalation Engineer
Email: nichburk@microsoft.com<mailto:nichburk@microsoft.commailto:nichburk<EMAIL_ADDRESS>Phone: +1<PHONE_NUMBER>
Hours: Monday-Friday 0900-1800 ET
Manager ● Craig Fischer ●<EMAIL_ADDRESS>[SummitAward_2018-OutlookSign]
From: Crystal Thomas <notifications<EMAIL_ADDRESS>Sent: Friday, May 3, 2019 2:03 PM
To: MicrosoftDocs/OfficeDocs-SkypeForBusiness <OfficeDocs-SkypeForBusiness<EMAIL_ADDRESS>Cc: Nicholas Burkhammer <nichburk<EMAIL_ADDRESS>Mention <mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/OfficeDocs-SkypeForBusiness] Update docs with Mobile client version requirement for QoS (#1245)
Sorry, it's not clear to me what this work item is. It looks like a request for some sort of documentation change was made by @NicholasBurkhammerhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FNicholasBurkhammer&data=01|01|nichburk%40microsoft.com|9e766b70191046fba07b08d6cff1a210|72f988bf86f141af91ab2d7cd011db47|1&sdata=OCicWbgTL1c6N4S5ywRkR%2F2uh3RkLhWY6juDTIzJv7E%3D&reserved=0, who deferred to @premalhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpremal&data=01|01|nichburk%40microsoft.com|9e766b70191046fba07b08d6cff1a210|72f988bf86f141af91ab2d7cd011db47|1&sdata=8EJpwtSwVfvAU0tCggA3eSxTracQZA0zgSSDp13IiVQ%3D&reserved=0<EMAIL_ADDRESS>but I don't see any further discussion or clarification on the requested change and/or addition. Can you clarify what the work being requested is? I'm not familiar with the content, other than having formatted and published it late last year.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2FOfficeDocs-SkypeForBusiness%2Fissues%2F1245%23issuecomment-489187015&data=01|01|nichburk%40microsoft.com|9e766b70191046fba07b08d6cff1a210|72f988bf86f141af91ab2d7cd011db47|1&sdata=IZjxHavNFKh59Qgosju3KfPBgi29ozIOfsYdW534WH0%3D&reserved=0, or mute the threadhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKOT5NSCFKIC73YPP3SEEYDPTR46VANCNFSM4GKOVVDA&data=01|01|nichburk%40microsoft.com|9e766b70191046fba07b08d6cff1a210|72f988bf86f141af91ab2d7cd011db47|1&sdata=tPMLiZS7%2BaocUsb8YFuFSsWFA2ZI5GNOuhxnRc1X5Y0%3D&reserved=0.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2FOfficeDocs-SkypeForBusiness%2Fissues%2F1245%23issuecomment-489616295&data=01|01|v-crytho%40microsoft.com|d548dc0f2989478462e208d6d2250994|72f988bf86f141af91ab2d7cd011db47|1&sdata=CB3aKkf%2FCp%2FDrB1zcZ1Tr2tZwDeH9KL1OvuHMFLPclU%3D&reserved=0, or mute the threadhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAH7DHKFXXU3CYQ4IP4VSQQDPUAVSNANCNFSM4GKOVVDA&data=01|01|v-crytho%40microsoft.com|d548dc0f2989478462e208d6d2250994|72f988bf86f141af91ab2d7cd011db47|1&sdata=lPsRaK%2FdQFYoj9DelHE8WU367zGqb6Xn5lA2nFawFX4%3D&reserved=0.


Fix tag parsing when image contains host and port

Hello there. I really liked the idea of this extension, but when I tried to use it in my working environment, I ran into a problem with the wrong parsing of the docker image name and tag. This is due to an unaccounted case where the docker image name contains the hostname followed by the port. I used a regular expression from https://regex101.com/r/nmSDPA/1, you can check the link to see all the possible inputs that are parsed correctly.
I also fixed the missing title of the side menu UI component that was not displayed due to the use of deprecated property, and changed the title to use singular or plural form (image/images) depending on the number of containers.

Hello @Stingray42
Thank you for your help, it's really good!
I'll merge it 😊


Investigate bcgovGUID -> Moodle mapping issue

Warren this is kind of a bummer:
https://tracker.moodle.org/browse/MDL-61789
"OAuth2 field mappings don't allow to choose internal profile fields"
In a nutshell, because bcgovGUID is a custom field, the Moodle code ignores it and doesn't write to the database. So, even though the UI makes it look like you can map a custom AD field to a Moodle profile field (non-custom), there is a bug that is preventing the field you choose from actually populating in the database. In this case, I tried mapping bcgovGUID -> ID Number as ID Number is a standard profile field, but it doesn't actually work. It looks like there is some work done to correct this and make it so that you can choose a custom AD field and map that properly to a custom Moodle profile field, but it is not yet working and has been outstanding for at least the past two years. I think there's a great opportunity here, if we can fix this, to contribute the patches back to Moodle.
I'll update again when I know more...

Warren responded:
"That is unfortunate. And certainly could be a good opportunity to contribute. I'm thinking that is it's been in the queue for 2+ years, it might be tricky...but we can certainly take a look. This could be a bit of a can of worms if we need to incorporate behat, etc. to do it (properly). https://docs.moodle.org/dev/Behat_integration Although they would likely be willing to help us out if we fix the actual problem."

Warren and I are going to spend a couple of hours each investigating in order to determine if we need a consult or if we can fix ourselves.

WIP

Catalyst has determined that this can be resolved in 4 hours of development time. This work has been approved by David.
Standing by for updates.

Catalyst has estimated 4 hrs, but we need a better estimate on the time for them as it doesn't look like they have estimated properly for everything that might be involved.
Azure is providing GUID but we are not able to store the user IDs because of a Moodle bug.. cant map it to the user profile.

Summary: Catalyst was able to patch the main issue referred to at the top here, and have had that deployed to Moodle Core! It's awesome, but we've run into a snag that we need to investigate a bit more: while the main issue with mapping the standard oauth fields to profile (regular and custom) is fixed, our oauth (AzureAD) is returning the bcgovGUID as a custom field in the response (not part of the standard response), and for some reason it's not mapping it correctly. Not sure why, but something weird is going on as we seem to be able to change the field around indiscriminately and it populates the same value...
Action: Setup meeting with Warren for Monday to discuss in further detail.

Moodle

initially talks to authorization endpoint,
receives auth token and uses that to
calls userinfo endpoint to and uses that response to
create user account

CITZ says they cannot encode bcgovGUID into the userinfo endpoint response.
Met with Jared and Simen from freshworks to chat about Keycloak.
We're taking info to Catalyst for advice

@freshjwarren FYI
It turns out that getting up and running on Keycloak was trivial :)
https://bcgov.github.io/sso-requests
Most of the process is automated and it's well documented, so we were up and running in about 30 minutes in the -dev environment; then another hour or so to tease out some details (e.g. the attribute name in Keycloak is "idir_userid" and not "bcgovguid" as it is in AuzreAD) and do some testing.
Bottom line: Keycloak returns the correct GUID with the userinfo_endpoint response by default and Moodle can read that and map it to the correct profile field by default with no intervention or further mucking about :) Our request for production credentials has been submitted and should be approved within the next 2-3 days. Setting it up in Moodle should be seamless.
This was a big blocker issue that has now been removed! I'm going to wait until we're in production with some testing under our belt before I actually close this issue, but ... PHEW!!


Onboard & Offboard: Product

Overview
We need to have a checklist of items to do when a product manager onboard and offboards so that the process can be consistent and fast.
Date Updated
2022/3/11
Action Items

[ ] Check to see if the org template for this process has new steps in it, and if it does, update this issue and its template with content and add the last date you updated the template below
[ ] Copy template to comment below
[ ] Add name of person
[ ] Check off as done

#### Onboard
- [ ] Slack channel membership
  - [ ] #civic-tech-index
  - [ ] #cti-pm
- [ ] Add to Google calendar invites
   - [ ] Sundays 9-10AM PST PM meeting
   - [ ] Monday 6-8PM PST All-team Stand-up
   - [ ] Thursday 6-7PM PST All-team Stand-up
- [ ] Add to team page on Wiki
- [ ] Google Drive
   - [ ] Add to drive as Manager
- [ ] Restricted Drive
   - [ ] Add to restricted drive if they work directly with developers for testing or require access to keys/tokens and automation scripts
- [ ] Roster
  - [ ] Send link
  - [ ] Team member adds themselves
  - [ ] Check for Public and note in roster
     - [ ] HFLA People Page
     - [ ] CTI People Page
  - [ ] Check for 2FA and note in roster
     - [ ] HFLA People Page
     - [ ] CTI People Page
- [ ] GitHub
     - [ ] Add name to profile
     - [ ] Add to team write team
        - [ ] Change membership to maintainer
     - [ ] Add to read vault
        - [ ] Change membership to maintainer
- [ ] Figma
  - [ ] invite
  - [ ] acceptance
- [ ] 1password
     - [ ] invitation
     - [ ] acceptance
     - [ ] add to vaults
       - [ ] Civic Tech Index - PM
       - [ ] Civic Tech Index - Design
       - [ ] Zoom vault
- [ ] Add to email address(s)
   - [ ]<EMAIL_ADDRESS>- [ ] Social Media Accounts with role assignment
   - [ ] Facebook
- [ ] Train how to
   - [ ] login to team email account
   - [ ] setup chrome shortcut for adding to desktop
   - [ ] use zoom spreadsheet, vault and accounts
   - [ ] calendar invite

#### Offboard
- [ ] Remove from Google calendar invite
   - [ ] Sundays 9-10AM PST PM meeting
   - [ ] Monday 6-8PM PST All-team Stand-up
   - [ ] Thursday 6-7PM PST All-team Stand-up
- [ ] WIKI
  - [ ] move to new place on team page
  - [ ] 1password setup
    - [ ] remove from team vaults
       - [ ] Civic Tech Index - PM
       - [ ] Civic Tech Index - Design
       - [ ] Zoom vault
- [ ] Google Drive
   - [ ] demote to viewer
- [ ] Remove from Restricted Drive
- [ ] Roster
  - [ ] mark as inactive
- [ ] GitHub
     - [ ] demote member to read only team and remove from write team
- [ ] Figma
  - [ ] remove from team
- [ ] Help them delete the desktop shortcut to email address if they made one.
- [ ] Remove from email address(s)
   - [ ]<EMAIL_ADDRESS>   - [ ]<EMAIL_ADDRESS>- [ ] Remove from Social Media Accounts with role assignment
   - [ ] Facebook

Resources/Instructions

1password.com
Google Drive
Team Roster
Check public and 2FA at

HFLA people page (Note: May be different for CTI)
CTI's people page

GitHub Team

base (read)
write
maintain
[triage] - Don't exist
admin

WIKI team page: https://github.com/civictechindex/CTI-website-frontend/wiki/The-Team
Civic Tech Index Figma
Shortcut for adding a profile to the desktop:  chrome://settings/manageProfile
Tutorials

Forward emails to team members
Add new FB Page Admin

Socials

Instagram
Facebook
Twitter
Github
CTI Social Media Assets

org template updated 2022-02-23
Changelog

Onboard Sean 2022-03-13

[ ] Slack channel membership

[ ] #civic-tech-index
[ ] #cti-pm

[ ] Add to Google calendar invites

[ ] Sundays 9-10AM PST PM meeting
[ ] Tuesday 6-8PM PST All-team Stand-up
[ ] Thursday 6-7PM PST All-team Stand-up

[ ] Add to team page on Wiki
[ ] Google Drive

[ ] Add to drive as Manager

[ ] Roster

[ ] Send link
[ ] Team member adds themselves
[ ] Check for Public and note in roster
[ ] Check for 2FA and note in roster

[ ] GitHub

[ ] Add to team write team

[ ] Change membership to maintainer

[ ] Add to read vault

[ ] Change membership to maintainer

[ ] Figma

[ ] invite
[ ] acceptance

[ ] 1password

[ ] invitation
[ ] acceptance
[ ] add to vaults

[ ] Civic Tech Index - PM
[ ] Civic Tech Index - Design
[ ] Zoom vault

[ ] Add to email address(s)

[ ]<EMAIL_ADDRESS>

[ ] Social Media Accounts with role assignment

[ ] Facebook
[ ] Twitter

[ ] Train how to

[ ] login to team account
[ ] setup chrome shortcut for adding to desktop
[ ] use zoom spreadsheet, vault and accounts
[ ] calendar invite

Onboard Kevin 2022-3-14

[ ] Slack channel membership

[ ] #civic-tech-index
[ ] #cti-pm

[ ] Add to Google calendar invites

[ ] Sundays 9-10AM PST PM meeting
[ ] Tuesday 6-8PM PST All-team Stand-up
[ ] Thursday 6-7PM PST All-team Stand-up

[ ] Add to team page on Wiki
[ ] Google Drive

[ ] Add to drive as Manager

[ ] Roster

[ ] Send link
[ ] Team member adds themselves
[ ] Check for Public and note in roster

[ ] HFLA People Page
[ ] CTI People Page

[ ] Check for 2FA and note in roster

[ ] HFLA People Page
[ ] CTI People Page

[ ] GitHub

[ ] Add to team write team

[ ] Change membership to maintainer

[ ] Add to read vault

[ ] Change membership to maintainer

[ ] Figma

[ ] invite
[ ] acceptance

[ ] 1password

[ ] invitation
[ ] acceptance
[ ] add to vaults

[ ] Civic Tech Index - PM
[ ] Civic Tech Index - Design
[ ] Zoom vault

[ ] Add to email address(s)

[ ]<EMAIL_ADDRESS>

[ ] Social Media Accounts with role assignment

[ ] Facebook

[ ] Train how to

[ ] login to team email account
[ ] setup chrome shortcut for adding to desktop
[ ] use zoom spreadsheet, vault and accounts
[ ] calendar invite

Onboard Briana 3-14-2022

[ ] Slack channel membership

[ ] #civic-tech-index
[ ] #cti-pm

[ ] Add to Google calendar invites

[ ] Sundays 9-10AM PST PM meeting
[ ] Tuesday 6-8PM PST All-team Stand-up
[ ] Thursday 6-7PM PST All-team Stand-up

[ ] Add to team page on Wiki
[ ] Google Drive

[ ] Add to drive as Manager

[ ] Roster

[ ] Send link
[ ] Team member adds themselves
[ ] Check for Public and note in roster

[ ] HFLA People Page
[ ] CTI People Page

[ ] Check for 2FA and note in roster

[ ] HFLA People Page
[ ] CTI People Page

[ ] GitHub

[ ] Add name to profile
[ ] Add to team write team

[ ] Change membership to maintainer

[ ] Add to read vault

[ ] Change membership to maintainer

[ ] Figma

[ ] invite
[ ] acceptance

[ ] 1password

[ ] invitation
[ ] acceptance
[ ] add to vaults

[ ] Civic Tech Index - PM
[ ] Civic Tech Index - Design
[ ] Zoom vault

[ ] Add to email address(s)

[ ]<EMAIL_ADDRESS>

[ ] Social Media Accounts with role assignment

[ ] Facebook

[ ] Train how to

[ ] login to team email account
[ ] setup chrome shortcut for adding to desktop
[ ] use zoom spreadsheet, vault and accounts
[ ] calendar invite

Onboard Max 3.21.22

[x] Slack channel membership

[x] #civic-tech-index
[x] #cti-pm

[ ] Add to Google calendar invites

[ ] Sundays 9-10AM PST PM meeting
[x] Monday 6-8PM PST All-team Stand-up
[x] Thursday 6-7PM PST All-team Stand-up

[x] Add to team page on Wiki
[x] Google Drive

[ ] Add to drive as Manager

[ ] Restricted Drive

[ ] Add to restricted drive if they work directly with developers for testing or require access to keys/tokens and automation scripts

[x] Roster

[ ] Send link
[ ] Team member adds themselves
[ ] Check for Public and note in roster

[ ] HFLA People Page
[ ] CTI People Page

[ ] Check for 2FA and note in roster

[ ] HFLA People Page
[ ] CTI People Page

[ ] GitHub

[ ] Add name to profile
[ ] Add to team write team

[ ] Change membership to maintainer

[ ] Add to read vault

[ ] Change membership to maintainer

[x] Figma

[ ] invite
[ ] acceptance

[ ] 1password

[ ] invitation
[ ] acceptance
[ ] add to vaults

[ ] Civic Tech Index - PM
[ ] Civic Tech Index - Design
[ ] Zoom vault

[x] Add to email address(s)

[x]<EMAIL_ADDRESS>

[ ] Social Media Accounts with role assignment

[ ] Facebook

[ ] Train how to

[ ] login to team email account
[ ] setup chrome shortcut for adding to desktop
[ ] use zoom spreadsheet, vault and accounts
[ ] calendar invite

Onboard Iffath 5.19.22

[x]  Slack channel membership

[x]  #civic-tech-index
[x]  #cti-pm

[x]  Add to Google calendar invites

[ ]  Sundays 9-10AM PST PM meeting
[x]  Monday 6-8PM PST All-team Stand-up
[x]  Thursday 6-7PM PST All-team Stand-up

[x]  Add to team page on Wiki

[x]  Google Drive

[ ]  Add to drive as Manager

[ ]  Restricted Drive

[ ]  Add to restricted drive if they work directly with developers for testing or require access to keys/tokens and automation scripts

[x]  Roster

[x]  Send link

[x]  Team member adds themselves

[ ]  Check for Public and note in roster

[ ]  HFLA People Page
[ ]  CTI People Page

[ ]  Check for 2FA and note in roster

[ ]  HFLA People Page
[ ]  CTI People Page

[x]  GitHub

[x]  Add name to profile

[ ]  Add to team write team

[ ]  Change membership to maintainer

[ ]  Add to read vault

[ ]  Change membership to maintainer

[x]  Figma

[x]  invite
[x]  acceptance

[ ]  1password

[ ]  invitation

[ ]  acceptance

[ ]  add to vaults

[ ]  Civic Tech Index - PM
[ ]  Civic Tech Index - Design
[ ]  Zoom vault

[x]  Add to email address(s)

[x]<EMAIL_ADDRESS>

[ ]  Social Media Accounts with role assignment

[ ]  Facebook

[ ]  Train how to

[ ]  login to team email account
[ ]  setup chrome shortcut for adding to desktop
[ ]  use zoom spreadsheet, vault and accounts
[ ]  calendar invite


Can't download continuous streams that last longer than the 12-hour rewind limit

For example streams like this that go on for weeks/months:
https://www.youtube.com/watch?v=nWB0ZnYfO6I
The program just gets stuck forever trying to download it and keeps the empty '.ts' files. livestream_saver has the same issue. Is there an option to specify a segment range you can download?
https://gist.github.com/cheadrian/b661fb68a6a87ea64069e641cef68c3e
This script is able to specify a segment range and download it, but you have to manually get to network tab, get the proper links and manually tweak the script and then concatenate yourself, lots of work.

This issue is noted in #50. I do plan to eventually automatically start from the earliest fragment it can retrieve if the first one fails, but have not gotten around to it.


Temporarily reducing number of validators for icad tests only

Description

The icad tests have started failing since we bumped the validator count to 4. I created this issue to investigate and resolve the problem.
This PR temporarily reduces the validator count of icad tests only so we can continue to run them.
Backwards compatibility tests
Matrix Version: main
TestInterchainAccountsTestSuite

[x] chain A (v0.3.2) -> chain B (v0.1.3)
[x] chain A (v0.1.3) -> chain B (v0.3.2)
[x] chain A (v0.2.2) -> chain B (v0.3.2)
[x] chain A (v0.3.2) -> chain B (v0.2.2)

related to: #2104

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[ ] Targeted PR against correct branch (see CONTRIBUTING.md)
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[ ] Code follows the module structure standards.
[ ] Wrote unit and integration tests
[ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
[ ] Added relevant godoc comments.
[ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
[ ] Re-reviewed Files changed in the Github PR explorer
[ ] Review Codecov Report in the comment section below once CI passes

If we don't run the tests on every PR do we need to merge this work then?

@seantking the icad tests are manually triggerable, but run the test code from the main branch by default.

@colin-axner I created #2111


Fix the default GW instance type for Submariner GW

This PR updates the default Submariner Gateway instance type for Azure/RHOS clusters to the one that is actually deployed.

CC @aswinsuryan @tpantelis @skitt

/approve
/cherrypick release-2.7
/cherrypick release-2.6

/cherrypick release-2.6


Exploding the pot, it is determined that the folder does not exist. Please create it first

Thanks, should be fixed now.


GitLab triggers (new topic) STO-7459

Preview links

GitLab triggers to block merge requests -

Intro -- switched steps (create trigger 1, failure critiera 2)
Before you begin Updated GitLab connector link
Create the Harness trigger Fixed links to subsections, removed bold in links
Set up the failure criteria "filter" => "set of failure criteria"

GitHub triggers to block pull requests

Intro -- switched steps (create trigger 1, failure critiera 2)
Before you beginUpdated GitLab connector link
Create the Harness trigger Fixed links to subsections, removed bold in links
Set up the failure criteria "filter" => "set of failure criteria"

Merge requirements
PRs must meet these requirements to be merged:

[ ] Successful preview build.
[ ] Code owner review.
[ ] No merge conflicts.
[ ] Release notes/new features docs: Feature/version released to at least one prod environment.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://66416d6bc06afe41e5214d38--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://664287ecc5b4d43367bb160a--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://66428c33e94e373b63a903fc--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://664636507aa3e5008affdcab--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://664b63cb89a77ba300268559--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://664b75e6a3827cb2cac9135f--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6658ef7337abf67927ca1d3b--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6665fea824ce83124349f61f--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://666f7e8a40f54e125a20fab4--harness-developer.netlify.app


Refactor unnecessarily complex assert in AsyncSnapshot constructor

https://github.com/flutter/flutter/blob/ead455963c12b453cdb2358cad34969c76daf180/packages/flutter/lib/src/widgets/async.dart#L203
The expression assert(!(data != null && error != null)) can be simplified to assert(data == null || error == null)
It took me about five readings of that to figure out what it meant.  deMorgan to the rescue!

Mr. Schartz, noticing that fact required having taken a class in Logic, which as far as I know is not a requirement in Computer Science. I took Logic in Engineering but it was optional. Today kids see the elements of it in grade school though Geometry, but just the basics. We teach them set theory and that would be another chance, but again just do unions and intersections. Pity!

May I also add the suggestion that this be given the "good first commit" label, since the one-line change is almost entirely in the initial message here?


Text parsed as number returning NaN

Looks like the comma is parsed as a number, though it doesn't happen on other places where I also have some ingredients separated by commas without any numbers in it.
Here's the example:

Hm weird I can't reproduce locally with the same string. I see that you fixed it on your site, what did you change ?

Closing for now, if you manage to reproduce let me know.


Tracking Lance Datasets (DNC)

This issue tracks the progress of Deep learning datasets created using Lance

[x] [Text] Codeparrot GitHub Code dataset variants - Codeparrot-1M Python
[ ] [Text] Wikitext
[ ] [Text] Common Crawl
[ ] [Vision] Laion 400M
[ ] [Vision] Imagenet
[ ] [Vision] MS-COCO

If you would like to contribute to making these datasets, please reply to this issue with the dataset you wish to make into a Lance dataset and we would be happy to help you!

Hi! I would like to help. Could you provide some more detailed guidance of it? Like reference for a good solution for other dataset or so

@I8dNLo Thanks for showing an interest in expanding the Lance datasets family!
To know more about how to write a Lance dataset, check out the Lance Documentation for Reading and Writing Dataset. Since you showed an interest in Imagenet, here's a doc page that might come in handy for you - ImageURI.
I am currently in the process of creating documentation examples for making an Image dataset using Lance but feel free to open a PR if you beat me to it (ha!).
If, however, you want to work with Text datasets, we have a couple of examples of how to do that. Check these out - Lance Examples.
Let me know if you need anything else from us!


DNS Record delete flow breaks expectations of notifications db logic

When we delete a record, the notifications code tries to get details about the record from the database, but the record has already been removed and it fails.
For example, we deleted DNS Record with id=4 successfully, but it then fails to find it:
Notification job failed, unable add notification for failed DNS record id=4 Could not get DNS Record with id=4

This makes sense (it should fail to find a deleted record).  So the logic is wrong here.
<EMAIL_ADDRESS>  | {"level":"debug","message":"Route53 DNS change: delete emailtest.davidhumphrey.stage.mystudentproject.ca=<IP_ADDRESS> with type=A for user=david.humphrey","timestamp":"2023-03-27T14:11:16.542Z"}
<EMAIL_ADDRESS>  | {"level":"debug","message":"Checking status of Route53 DNS Change /change/C02843391JA25XXK3Z868","timestamp":"2023-03-27T14:11:17.060Z"}
<EMAIL_ADDRESS>  | {"level":"debug","message":"dns-worker started","timestamp":"2023-03-27T14:11:27.378Z"}
<EMAIL_ADDRESS>  | {"level":"debug","message":"Checking status of Route53 DNS Change /change/C02843391JA25XXK3Z868","timestamp":"2023-03-27T14:11:27.379Z"}
<EMAIL_ADDRESS>  | {"level":"debug","message":"dns-worker started","timestamp":"2023-03-27T14:11:47.756Z"}
<EMAIL_ADDRESS>  | {"level":"debug","message":"Checking status of Route53 DNS Change /change/C02843391JA25XXK3Z868","timestamp":"2023-03-27T14:11:47.756Z"}
<EMAIL_ADDRESS>  | {"level":"debug","message":"Syncing DNS record id=4 with DNS status=INSYNC to database","timestamp":"2023-03-27T14:11:48.156Z"}
<EMAIL_ADDRESS>  | {"level":"error","message":"Notification job failed, unable add notification for failed DNS record id=4 Could not get DNS Record with id=4","stack":"Error: Could not get DNS Record with id=4\n    at sendDnsRecordStatusUpdateNotification (/app/build/index.js:1116:13)\n    at QueueEvents.<anonymous> (/app/build/index.js:1158:9)","timestamp":"2023-03-27T14:11:48.183Z"}

This isn't an issue now with the reconciler.


What are database views and how do they work ?

my environment running ArangoDB

[x] 3.2 (3.2.4)
[x] Single-Server
[x] rocksdb
[x] Linux

[x] Ubuntu .deb (Ubuntu 16.04 x86_64)

this is an arangosh-related question:
arangosh help command mentions something called "View Functions" :
View Functions:
  _views()                                  list all views
  _view(<name>)                             get view by name
  _createView(<name>, <type>, <properties>) creates a new view

I couldn't find any clues in the documentation; what are those views and how do they work ?

Hi Matcho,
sorry for the confusion.'Views' is a preparation for a bigger new feature that we will fully integrate and release soon:ish. This feature will introduce 'views' for its specific purpose.
Hope I could clarify things

Hi MrPieces,
Thank you for the quick and precise answer.
Looking forward to see this feature !


Build TestObsBias.cc, TestObsDiagnostics.cc and TestObsFunction.cc only once

Description
This PR defines test executables test_ObsBias.x, test_ObsDiagnostics.x and test_ObsFunction.x that are reused by tests of all implementations of observation biases, diagnostics and functions. This reduces the build time.
This PR was originally opened as https://github.com/JCSDA-internal/ufo-old/pull/1349.
Issue(s) addressed
Link the issues to be closed with this PR

fixes https://github.com/JCSDA-internal/ufo/issues/135

Dependencies
None
Impact
None

@wsmigaj  Please re-open this PR in JCSDA-internal. Unfortunately, GitHub does not permit a private fork of a public repository, and making JCSDA public has broken the link with JCSDA-internal/ufo.


ng build disable build *.map and *.gz files

How to disable build *.map and *.gz file when i runng build --prod?

You can use --no-sourcemap to disable sourcemaps. Gzipped files can not be turned of.

do we need .map files on server?

We need .map files to transpose js in ts in your browser.


Ambiguous call when using a derived type

IDL:
namespace MarkupSample
{
    [bindable]
    [default_interface]
    runtimeclass CustomVSM : Windows.UI.Xaml.VisualStateManager
    {
        CustomVSM();
        overridable Boolean GoToStateCore(Windows.UI.Xaml.Controls.Control control,
                Windows.UI.Xaml.FrameworkElement templateRoot,
                String stateName, Windows.UI.Xaml.VisualStateGroup group,
                Windows.UI.Xaml.VisualState state,
                Boolean useTransitions) ;
    }
}

IMPL:
namespace winrt::MarkupSample::implementation
{
    struct CustomVSM : CustomVSMT<CustomVSM>
    {
        CustomVSM() = default;

        bool GoToStateCore(winrt::Windows::UI::Xaml::Controls::Control const& control,
                winrt::Windows::UI::Xaml::FrameworkElement const& templateRoot,
                winrt::hstring const& stateName,
                winrt::Windows::UI::Xaml::VisualStateGroup const& group,
                winrt::Windows::UI::Xaml::VisualState const& state,
                bool useTransitions) {
            return __super::GoToStateCore(control, templateRoot, stateName, group, state, useTransitions);
        }
    };
}

call-site:
        auto vsm = MarkupSample::CustomVSM();
        vsm.GoToStateCore(Controls::Button(), grid, L"VS1", vsmGroup, vsmState, true);

Results in:
error C2668: 'winrt::impl::consume_Windows_UI_Xaml_IVisualStateManagerOverrides<D>::GoToStateCore': ambiguous call to overloaded function
        with
        [
            D=winrt::MarkupSample::CustomVSM
        ]
could be 'auto winrt::impl::consume_Windows_UI_Xaml_IVisualStateManagerOverrides<D>::GoToStateCore(const winrt::Windows::UI::Xaml::Controls::Control &,const winrt::Windows::UI::Xaml::FrameworkElement &,const winrt::param::hstring &,const winrt::Windows::UI::Xaml::VisualStateGroup &,const winrt::Windows::UI::Xaml::VisualState &,bool) const'
        with
        [
            D=winrt::MarkupSample::CustomVSM
        ]
or       'auto winrt::impl::consume_MarkupSample_ICustomVSMOverrides<D>::GoToStateCore(const winrt::Windows::UI::Xaml::Controls::Control &,const winrt::Windows::UI::Xaml::FrameworkElement &,const winrt::param::hstring &,const winrt::Windows::UI::Xaml::VisualStateGroup &,const winrt::Windows::UI::Xaml::VisualState &,bool) const'
        with
        [
            D=winrt::MarkupSample::CustomVSM
        ]

while trying to match the argument list '(winrt::Windows::UI::Xaml::Controls::Button, winrt::Windows::UI::Xaml::Controls::Grid, const wchar_t [4], winrt::Windows::UI::Xaml::VisualStateGroup, winrt::Windows::UI::Xaml::VisualState, bool)'

How does one call the overridden implementation?

By adding GoToStateCore to the IDL, you're adding a new method to CustomVSM, not overriding the one from VisualStateManager. Simply omitting GoToStateCore from the IDL should make your code work (and correctly override GoToStateCore).

Thanks - I wonder if our docs are wrong though:
https://docs.microsoft.com/uwp/midl-3/intro#method-visibility-modifiers

The overridable modifier states that this method overrides a method with the same name and signature in a base class.

Also: https://docs.microsoft.com/uwp/api/Windows.UI.Xaml.VisualStateManager?view=winrt-22000#custom-visualstatemanager

The derived class should override the protected GoToStateCore method. Any instance of the custom VisualStateManager uses this Core logic when its GoToState method is called.

These two led me to believe that in order to create a subclass of VisualStateManager, I had to declare GoToStateCore as overridable in the IDL.

The first quote is definitely wrong. It should say that overridable is what allows the function to be overridden by derived classes.
The second however seems fine to me. Maybe what's missing is documentation on how to override in C++/WinRT - the only example of this I can find is https://docs.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/xaml-cust-ctrl#implementing-overridable-functions-such-as-measureoverride-and-onapplytemplate which is not something people would be naturally inclined to look for when trying to override and it doesn't mention that it doesn't need to be present in IDL.

Sent these two PRs:

https://github.com/MicrosoftDocs/winrt-related/pull/284
https://github.com/MicrosoftDocs/windows-uwp/pull/3582

Looks like this was a doc bug. Closing this issue.


[firebase_performance] HttpMetric PayloadSize field can throw a NullPointerException

When following the example for "Adding monitoring for network requests" on the plugin Readme page (https://pub.dev/packages/firebase_performance), an uncaught java.lang.NullPointerException can be thrown when responsePayloadSize or requestPayloadSize are given a null value.
This should be handled, as sometimes these values aren't available (especially in the case of streamed responses).

@axel-op
This issue has been moved to https://github.com/FirebaseExtended/flutterfire/issues/1135. Any further collaboration will be done there.


Add brazilian-utils header to README.md and README_EN.md files

Add brazilian-utils header to README.md and README_EN.md files
Like this:

The same we have for JS version: https://github.com/brazilian-utils/brazilian-utils/blob/main/README.md
Code:

🇧🇷 Brazilian Utils

Utils library for Brazilian-specific businesses.

@camilamaia can I take this issue? :)

Sure thing @antoniamaia!


Resetting Password with a reset Email

I managed to get the Firebase Auth with Google and Email to work and now I want that my users are able to reset their password, for example when they forgot it.
A reset email is being sent with a link which looks like this:
https://example.com/reset?mode=[mode]&oobCode=[oobCode]&apiKey=[apiKey]
How can I get those parameters in my Angular app and what methods should I use after i got them.
I saw applyActionCode, confirmActionCode and confirmPasswordReset.
Version info
Angular: 4.2.4
Firebase: 4.4.0
AngularFire: 4.0.0-rc.2

forgot password reset link , see the video link completely solved
https://youtu.be/daGZO6YAkRg


feat: support TS 2.9

Fixes #391

@ikatyang Does it break Typescript 2.7 compatibility?

This PR uses conditional types which is available since TS 2.8.