Skip to content

Instantly share code, notes, and snippets.

View ChristoWolf's full-sized avatar

Christoph Wolf ChristoWolf

View GitHub Profile
@ChristoWolf
ChristoWolf / .gitattributes
Last active March 3, 2023 16:18
Git attributes enabling Markdown language detection on GitHub
# Markdown
*.md linguist-vendored=false
*.md linguist-generated=false
*.md linguist-documentation=false
*.md linguist-detectable=true
# YAML
*.y*ml linguist-vendored=false
*.y*ml linguist-generated=false
*.y*ml linguist-documentation=false
"editor.tokenColorCustomizations": {
"textMateRules": [
{
"scope": [
"comment",
"comment.block",
"comment.block.documentation",
"comment.line",
"constant",
"constant.character",
@douglasmakey
douglasmakey / sender.go
Last active May 22, 2025 07:33
Golang - send an email with attachments.
package main
import (
"bytes"
"encoding/base64"
"fmt"
"io/ioutil"
"mime/multipart"
"net/smtp"
"os"
@jonashackt
jonashackt / bash.sh
Created August 24, 2017 13:38
List all Virtual Box ostypes for guest_os_type in Packer template
# on terminal
VBoxManage list ostypes
@nathan-osman
nathan-osman / win32.go
Last active December 30, 2025 19:01
Simple Windows GUI application written in Go
package main
import (
"log"
"syscall"
"unsafe"
)
var (
kernel32 = syscall.NewLazyDLL("kernel32.dll")
@alces
alces / ansible_local_playbooks.md
Last active January 26, 2026 18:28
How to run an Ansible playbook locally
  • using Ansible command line:
ansible-playbook --connection=local 127.0.0.1 playbook.yml
  • using inventory:
127.0.0.1 ansible_connection=local
@andrewmilson
andrewmilson / file-upload-multipart.go
Last active March 6, 2026 11:34
Golang multipart/form-data File Upload
package main
import (
"net/http"
"os"
"bytes"
"path"
"path/filepath"
"mime/multipart"
"io"
@dvdsgl
dvdsgl / Monads for a C# dev.md
Last active October 10, 2024 20:26
Monads explained (sort of) to a C# developer

A monad is a fancy word for a generic type of the form MyMonad<T> (a generic type of arity 1).

A monad is special because it adds 'special powers' to the T that it wraps. These 'special powers' won't sound very special to an imperative programmer, so you have to squint to see them but bear with me.

  • IEnumerable<T> is a monad that gives values of type T the special power of nondeterminism, or the ability to 'be' multiple values at once.
  • Nullable<T> is a monad that gives values of type T the special power of nullability, or the ability to be absent.
  • Task<T> is a monad that gives values of type T the special power of asynchronicity, or the ability to be used before they are computed.

The trick with monads comes when you want to play with the T values, because they are inside another type. C# introduced language changes to make dealing with values inside these monads easier:

@wpscholar
wpscholar / vagrant-cheat-sheet.md
Last active March 10, 2026 16:39
Vagrant Cheat Sheet

Typing vagrant from the command line will display a list of all available commands.

Be sure that you are in the same directory as the Vagrantfile when running these commands!

Creating a VM

  • vagrant init -- Initialize Vagrant with a Vagrantfile and ./.vagrant directory, using no specified base image. Before you can do vagrant up, you'll need to specify a base image in the Vagrantfile.
  • vagrant init <boxpath> -- Initialize Vagrant with a specific box. To find a box, go to the public Vagrant box catalog. When you find one you like, just replace it's name with boxpath. For example, vagrant init ubuntu/trusty64.

Starting a VM

  • vagrant up -- starts vagrant environment (also provisions only on the FIRST vagrant up)
@emoacht
emoacht / DeviceNotificationListener.cs
Created February 15, 2015 09:02
Listen add/remove events of devices including USB devices in WPF
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Interop;