Skip to content

Instantly share code, notes, and snippets.

View craigzour's full-sized avatar

Clément JANIN craigzour

View GitHub Profile
@craigzour
craigzour / .js
Last active September 9, 2022 13:18
ex3
const step1 = [
{ FormID: '1', Status: 'New', CreatedAt: 1662477251 }, // Created 10 days ago
{ FormID: '2', Status: 'Saved', CreatedAt: 1662477252 }, // Created 20 days ago
{ FormID: '1', Status: 'New', CreatedAt: 1662477254 }, // Created 28 days ago
{ FormID: '2', Status: 'Saved', CreatedAt: 1662477255 }, // Created 31 days ago
{ FormID: '1', Status: 'Saved', CreatedAt: 1662477257 }, // Created 17 days ago
{ FormID: '3', Status: 'New', CreatedAt: 1662477258 }, // Created 29 days ago
];
const step2 = [
@craigzour
craigzour / .js
Created September 9, 2022 12:41
ex2
const formResponses = [{Status: "New", CreatedAt: 1662477251}, {Status: "Saved", CreatedAt: 1662477251}];
const results = formResponses.reduce((acc, current) => {
if (current.Status === "New") {
// responseAge is defined using the same day diff logic that can be found in the previous phase
if (responseAge > 25) return { ...acc, NumberOfUnsavedResponsesBeyond25Days: acc.NumberOfUnsavedResponsesBeyond25Days + 1 };
else if (responseAge > 13) return { ...acc, NumberOfUnsavedResponsesBeyond13Days: acc.NumberOfUnsavedResponsesBeyond13Days + 1 };
} else if (current.Status === "Saved") {
if (responseAge > 25) return { ...acc, NumberOfUnconfirmedResponsesBeyond25Days: acc.NumberOfUnconfirmedResponsesBeyond25Days + 1 };
else if (responseAge > 13) return { ...acc, NumberOfUnconfirmedResponsesBeyond13Days: acc.NumberOfUnconfirmedResponsesBeyond13Days + 1 };
@craigzour
craigzour / .js
Last active September 9, 2022 12:39
ex1
const formResponses = [{Status: "New", CreatedAt: 1662477251}, {Status: "Saved", CreatedAt: 1662477251}];
const results = formResponses.reduce((acc, current) => {
if (responseAge > 13) { // responseAge is defined using the same day diff logic that can be found in the previous phase
if (current.Status === "New") {
return { ...acc, NumberOfUnsavedResponsesBeyond13Days: acc.NumberOfUnsavedResponsesBeyond13Days + 1 };
} else if (current.Status === "Saved") {
return { ...acc, NumberOfUnconfirmedResponsesBeyond13Days: acc.NumberOfUnconfirmedResponsesBeyond13Days + 1 };
}
}
@craigzour
craigzour / PairingManager.kt
Created May 10, 2018 13:54
Here is a way of implementing pairing/bonding with RxAndroidBle
package hello.world
import android.bluetooth.BluetoothDevice
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.BroadcastReceiver
import com.polidea.rxandroidble2.RxBleDevice
import io.reactivex.Completable
import io.reactivex.disposables.Disposables
@craigzour
craigzour / hid_device_manager.rs
Created April 21, 2017 13:10
MSP firmware update in Rust
use hidapi::HidApi;
use updatable_device::UpdatableDevice;
const BSL_VENDOR_ID: u16 = 0x2047;
const BSL_PRODUCT_ID: u16 = 0x200;
pub struct HIDDeviceManager {
hid_api: HidApi
}