Skip to content

Instantly share code, notes, and snippets.

View patridge's full-sized avatar

Adam Patridge patridge

View GitHub Profile
@patridge
patridge / IWiFiNetworkAdapterExtensions.cs
Last active April 24, 2024 01:45
Meadow wifi helper to allow awaiting the wifi connection
using System;
using System.Threading;
using System.Threading.Tasks;
using Meadow.Hardware;
namespace MeadowHelpers {
public static class IWiFiNetworkAdapterExtensions {
public static async Task<NetworkConnectionEventArgs> WaitForNetworkConnection(this IWiFiNetworkAdapter wifiAdapter, string? ssid = null, string? password = null, TimeSpan timeout = default(TimeSpan), CancellationToken cancellationToken = default(CancellationToken))
{
var tcs = new TaskCompletionSource<NetworkConnectionEventArgs>();
@patridge
patridge / NetworkHelpers.cs
Created October 31, 2022 22:08
Meadow: Network helper methods (NTP, WiFi discovery, requests, etc.)
public static class NetworkHelpers
{
public static async Task GetWebPageViaHttpClient(string uri)
{
Console.WriteLine($"Requesting {uri} - {DateTime.Now}");
using (var client = new HttpClient())
{
try
{
@patridge
patridge / gopro-video-concat.ps1
Last active October 10, 2022 15:35
PowerShell script to combine multi-part GoPro recordings into a single file using FFmpeg
# When GoPro recordings fill a 4GB file, they continue into additional sequential files differentiatedby the second and third characters, such as "GH010136.MP4" to "GH040136.MP4" when recording "0136" spans four files (GH01, GH02, GH03, GH04).
# Group all MP4 files of that GH*.MP4 format by the recording number (last four numbers) and filter by any grouping that contains more than one file, indicating it spans multiple files.
# TODO: Edit for your own FFmpeg install location
$ffmpegLocation = "C:\ProgramData\chocolatey\bin\ffmpeg.exe" # Default Chocolatey install location
$outputCombinedVideoSuffix = "-combined"
# Get all appropriate GoPro video segments without getting any previously generated combined video files (`-Exclude`).
foreach ($group in (Get-ChildItem GH*.MP4 -Exclude GH*${outputCombinedVideoSuffix}.MP4 | Group-Object -Property { $_.Name.Substring($_.Name.Length - ".MP4".Length - 4, 4) } | ? { ($_.Group | Measure-Object).Count -gt 1 })) {
# The ffmpeg utility can concatenate a bunch of video
// e.g., inject something whenever iterating a list
const arr = [ 1, 2, 3 ];
arr[Symbol.iterator] = function () {
let i = 0;
let arr = this;
return {
next: function () {
if (i >= arr.length) {
return { done: true };
} else {
@patridge
patridge / samples.sh
Created May 4, 2020 16:48
Command line reference
# Command line calls that don't fit elsewhere (e.g., PowerShell Experiments: https://github.com/patridge/PowerShellExperiments)
# Check for global NPM packages with updates available
npm outdated -g --depth=0
#
@patridge
patridge / markdown.json
Created April 3, 2020 20:32
Microsoft Docs/Learn Markdown snippets
{
"Microsoft Docs image": {
"prefix": [ "image", "img" ],
"body": [
":::image source=\"$1\" alt-text=\"$0\":::"
],
"description": "Microsoft Docs-style image syntax (':::image …:::')."
},
"Microsoft Docs decorative/icon image": {
"prefix": [ "image", "img" ],
@patridge
patridge / .gitignore
Last active April 2, 2021 19:59
FlatRedBall .gitignore
# FlatRedBall (FRB) .gitignore
# https://gist.github.com/patridge/46a9e6f410499e47fdbfc6d81c7c92f0/
*.Generated.cs
*.csvSettings
*.cachefile
*.Generated.Event.cs
*.gvwx
*.aeproperties
@patridge
patridge / gist:2556a7b8cb90f3efe6cf103fea417193
Last active July 12, 2022 04:03
My current Git aliases
# To view any current aliases, run this:
git config --get-regexp alias
# `git tree` (and press Q to quit): Display a nice tree with branches.
git config --global alias.tree "log --graph --decorate --pretty=oneline --abbrev-commit --all"
# `git showtrackedignored`: Display normally tracked files currently being ignored.
git config --global alias.showtrackedignored "ls-files -i --exclude-standard"
# Push the current branch to my personal remote name choice (by default, technically configurable, but everyone should push to patridge too, apparently)
alias.pushu !git push --set-upstream ${1-patridge} $(git branch --show-current)

Keybase proof

I hereby claim:

  • I am patridge on github.
  • I am patridge (https://keybase.io/patridge) on keybase.
  • I have a public key ASCKUpBrk6PnSerOrfBdBcjh8ZjyzZeQzEU8UP-Q2q0tago

To claim this, I am signing this object:

@patridge
patridge / SuperAwesomeButton.cs
Last active January 22, 2016 21:10
Attempt at making a non-generic refactor-friendly BindableProperty. (Some back-story on the deprecation and my motivation: https://twitter.com/PatridgeDev/status/690620310870106112.)
public class SomeButton : Button {
public string ExampleThing {
get { return (string)GetValue(ExampleThingBindableProperty); }
set { SetValue(ExampleThingBindableProperty, value); }
}
public static readonly BindableProperty ExampleThingBindableProperty =
BindableProperty.Create(nameof(ExampleThing), typeof(string), typeof(Button), default(string));
}