Skip to content

Instantly share code, notes, and snippets.

What a mess I've made

Stephen Jennings jennings

What a mess I've made
View GitHub Profile

Download PuTTY

Download and install the latest 64-bit PuTTY. Using the MSI is fine.

Generate an SSH key

Each computer should a unique SSH key. The same key can be reused for GitHub, Bitbucket, and any other Git server you connect to.

  1. Launch PuTTYgen:
  2. Select "Ed25519"
View Caffeinate.ps1
function Caffeinate {
$active_scheme_id = (powercfg /GetActiveScheme).Split(" ")[3]
$high_perf_id = "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"
powercfg /s $high_perf_id
if ($LASTEXITCODE -ne 0) { return }
try {
& $ScriptBlock
} finally {
jennings /
Last active Dec 19, 2019
A cheatsheet of Rx.NET to rxjs operators


System.Reactive rxjs 6
Observable.Return import { of } from "rxjs"
Observable.Empty import { EMPTY } from "rxjs"
Observable.Never import { NEVER } from "rxjs"
Observable.Throw import { throwError } from "rxjs"
Observable.Create new Observable(observer => {})
Observable.Range import { range } from "rxjs"
View export-git-changed-files.ps1
$ErrorActionPreference = "Stop"
function Main {
"This script creates a zip file that contains all files changed between two commits."
"Commits can be specified as commit IDs (SHA) or as branch names."
"For example: 'master' or 'ff39683ed6'"
$git_dir = Read-Host -Prompt "Git directory"
$to_commit = Read-Host -Prompt "Commit to deploy"
jennings /
Last active May 2, 2019
Templates for empty new-style csproj files

These are copied from this article by Nate McMaster. I've been Googling for it every time I needed it, so I decided it would be a good idea to save these templates somewhere, in case the article ever goes away.

View fake_webpack.js
// This is the body of the file foo/index.ts, wrapped in a function
["./foo/index.ts"]: function (module) {
const file = __webpack_resolve__("./foo/file.ts")
module.exports.Service = file.Service
// This is the body of the file foo/file.ts, wrapped in a function
["./foo/file.ts"]: function (module) {
jennings /
Last active Mar 3, 2019
Arch Linux ARM setup for Raspberry Pi 3
View app.cs
#define NONEST
void Main()
using (var db = new MyContext())
var date = "20180315";
var query = from row in db.Tabl1
where SqlFunctions.DateDiff(
View ComposingCancellationTokens.cs
using System;
using System.Threading;
namespace ConsoleApp1
class Program
static void Main()
var worker = new Thread(Worker);
jennings / InstallPapercutSmtpServer.ps1
Created Jan 16, 2019
Installs the Papercut SMTP Server
View InstallPapercutSmtpServer.ps1
# Using 5.1.23 because 5.1.70 has a bug that prevents the GUI from opening
$tag = "5.1.23"
$downloadUrl = "$tag/Papercut.Setup.exe"
$outputFileName = "$($env:TEMP)\Papercut.Setup.exe"
# Download
del $outputFileName -Force -ErrorAction SilentlyContinue
Invoke-WebRequest $downloadUrl -OutFile $outputFileName
# Install
You can’t perform that action at this time.