Skip to content

Instantly share code, notes, and snippets.

View adamralph's full-sized avatar
🤗
Living the dream

Adam Ralph adamralph

🤗
Living the dream
View GitHub Profile
@adamralph
adamralph / rebase-all-dependabot-prs.sh
Created July 21, 2024 09:06
Rebase all dependabot PRs
gh search prs \
--repo myorg/myrepo \
--state open \
--label dependencies \
--limit 200 \
--json "url" --jq ".[] | .url" \
| xargs -n 1 -I{} \
gh pr comment -b "@dependabot rebase" {}
@adamralph
adamralph / cancellation.cs
Last active May 26, 2021 13:16
a fanciful idea about a better form of cancellation in C#
// a fanciful idea about a better form of cancellation in C#
try
{
Foo(cancellationToken);
}
catch (Cancellation cancellation) // System.Cancellation - does NOT inherit from System.Exception, but still has a stack trace, etc.
{
}
catch (Exception ex)
// ==UserScript==
// @name GitHub checklist highlighter 595491
// @version 5
// @grant none
// @include https://github.com/*
// ==/UserScript==
(function f() {
var taskListItems = document.getElementsByClassName("task-list-item enabled");
@adamralph
adamralph / DumpPalette.cs
Created August 26, 2019 00:28
For use in Bullseye Palette.cs when tuning for CI systems
Console.WriteLine($"{black}black{@default}");
Console.WriteLine($"{red}red{@default}");
Console.WriteLine($"{green}green{@default}");
Console.WriteLine($"{yellow}yellow{@default}");
Console.WriteLine($"{blue}blue{@default}");
Console.WriteLine($"{magenta}magenta{@default}");
Console.WriteLine($"{cyan}cyan{@default}");
Console.WriteLine($"{white}white{@default}");
Console.WriteLine($"{brightBlack}brightBlack{@default}");
@adamralph
adamralph / ci.md
Last active September 9, 2019 21:58
My current assessment of SaaS CI systems

This assessment is performed with respect to the requirements of the .NET community open source projects which I maintain. It is restricted to the free tier provided by each system.

Only the drawbacks are listed, which makes the assessment sound a bit negative, but it's relative to a baseline functional expectation:

  • Linux and Windows
  • Fast provisioning
  • Concurrent builds
  • Common build properties surfaced as env vars (e.g build number)
  • Readable, copyable, and line-linkable log output, supporting ANSI colour codes and code page 437
@adamralph
adamralph / bullseye-custom-args-system.cs
Last active August 11, 2019 16:13
Using Bullseye with custom args with System.CommandLine.Experimental
// dotnet add package System.CommandLine.Experimental
using System.CommandLine;
using static Bullseye.Targets;
class Program
{
static void Main(string[] args)
{
var cmd = new RootCommand { TreatUnmatchedTokensAsErrors = false };
@adamralph
adamralph / ConcurrencyThrottlingByMessageType.cs
Created December 10, 2018 13:47
Throttling concurrency by message type in NServiceBus
using NServiceBus.Pipeline;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
internal class ConcurrencyThrottlingByMessageType : IBehavior<IIncomingLogicalMessageContext, IIncomingLogicalMessageContext>
{
private static readonly Dictionary<Type, Throttle> throttles = new Dictionary<Type, Throttle>
{
@adamralph
adamralph / UdiWorld.cs
Created October 22, 2018 19:51
My solution to the saga homework for https://particular.net/adsd
namespace UdiWorld
{
using System;
using System.Threading.Tasks;
using NServiceBus;
public class UserBecamePreferred
{
public Guid UserId { get; set; }
}
@adamralph
adamralph / bullseye-custom-args-mcmaster.cs
Last active October 17, 2019 09:51
Using Bullseye with custom args with McMaster.Extensions.CommandLineUtils
// dotnet add package McMaster.Extensions.CommandLineUtils
using System.Linq;
using McMaster.Extensions.CommandLineUtils;
using static Bullseye.Targets;
class Program
{
static void Main(string[] args)
{
@adamralph
adamralph / twitter-home-hider.js
Created August 23, 2018 17:12
Twitter Home hider
// ==UserScript==
// @name Twitter Home hider 323465
// @version 1
// @grant none
// @include https://twitter.com/*
// ==/UserScript==
document.getElementById("global-nav-home").style.display = "none";