Skip to content

Instantly share code, notes, and snippets.

View mbenford's full-sized avatar

Michael Benford mbenford

View GitHub Profile
@mbenford
mbenford / dbus-monitor.py
Created June 13, 2021 22:37
Monitoring DBus with dbus-next
from dbus_next.aio import MessageBus
from dbus_next.message import Message
from dbus_next.constants import BusType
import asyncio
async def main():
match = (
"type='method_call',"
"interface='org.freedesktop.PowerManagement.Inhibit',"
"path='/org/freedesktop/PowerManagement/Inhibit'"
@mbenford
mbenford / vpn.sh
Created April 8, 2020 03:10
Starts or stops a VPN connection
#!/bin/bash
set -e
conn_id=$(nmcli conn show | grep vpn | awk '{print $2}' | head -n1)
if [ "$conn_id" == "" ]; then
echo "no VPN connection was found"
exit 1
fi
@mbenford
mbenford / git-cut-branch.sh
Created July 15, 2019 17:51
Git custom command that moves all commits between @{u} and HEAD into a new branch and deletes them from the current branch
#!/bin/bash
# Moves all commits between @{u} and HEAD into a new branch
# and deletes them from the current branch.
#
# Copyright (c) 2019 Michael Benford <michael@michaelbenford.net>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights

Keybase proof

I hereby claim:

  • I am mbenford on github.
  • I am mbenford (https://keybase.io/mbenford) on keybase.
  • I have a public key ASBo0WcLt6b2Gjuq4tG-go7Ez0_bPJq3kNUA28QoKK1bPQo

To claim this, I am signing this object:

@mbenford
mbenford / spring-cleaning.js
Last active April 17, 2017 09:06
ngTagsInput spring cleaning script
const path = require('path');
const GitHubApi = require('github');
const jsonfile = require('jsonfile');
const moment = require('moment');
const async = require('async');
const config = require('./config.json');
const github = new GitHubApi({ protocol: 'https' });
github.authenticate({ type: 'oauth', token: config.token });
public static class MappingExtensions
{
public static void Unflatten<T>(this IMemberConfigurationExpression<T> config)
{
config.ResolveUsing(resolutionResult =>
{
var context = resolutionResult.Context;
var prefix = context.MemberName;
var destProperties = context.DestinationType.GetProperties();
var dest = Activator.CreateInstance(context.DestinationType);
@mbenford
mbenford / .bash_aliases
Last active August 29, 2015 14:21
My .bashrc file
alias la="ls -a"
alias psa="ps aux"
@mbenford
mbenford / get-permutations.js
Created April 30, 2015 03:15
Generate all permutations of the given set
function getPermutations(set) {
var result = [];
permutate(set);
return result;
function permutate(set, subset) {
if (!subset) subset = [];
if (set && !set.length) {
result.push(subset);
return;
@mbenford
mbenford / get-permutations.cs
Last active October 21, 2021 15:01
Generates all permutations of a set by using LINQ and a recursive approach
public static class Permutations
{
public static IEnumerable<IEnumerable<T>> Get<T>(IEnumerable<T> set, IEnumerable<T> subset = null)
{
if (subset == null) subset = new T[] { };
if (!set.Any()) yield return subset;
for (var i = 0; i < set.Count(); i++)
{
var newSubset = set.Take(i).Concat(set.Skip(i + 1));
@mbenford
mbenford / bit-manipulation.js
Created April 15, 2015 00:16
Bit manipulation in Javascript
function setBitOn(number, bit) {
return number | 1 << bit;
}
function setBitOff(number, bit) {
return number & ~(1 << bit);
}
function toggleBit(number, bit) {
return number ^ 1 << bit;