Skip to content

Instantly share code, notes, and snippets.

View puffnfresh's full-sized avatar

Brian McKenna puffnfresh

View GitHub Profile
#!/usr/bin/env nix-shell
#! nix-shell -i "emacs --batch -l $HOME/.emacs.d/core/core-load-paths.el -l" -p emacs26-nox
(require 'core-configuration-layer)
(configuration-layer/discover-layers)
(configuration-layer/make-all-packages nil)
(princ "p:\n")
(princ "let checked = n:\n")
(princ " let p' = p.${n} or null;\n")
(princ " in if p'.meta.broken or false then null else p';\n")
@puffnfresh
puffnfresh / SpacesDemo.m
Created November 11, 2012 07:19
Demo of Spaces API discovered via reverse engineering
#include <Carbon/Carbon.h>
typedef uint64_t CGSConnection;
extern CGSConnection _CGSDefaultConnection(void);
#define CGSDefaultConnection _CGSDefaultConnection()
typedef uint64_t CGSSpace;
typedef enum _CGSSpaceType {
kCGSSpaceUser,
kCGSSpaceFullscreen,
module Printf
%default total
data Format = FInt Format -- %d
| FString Format -- %s
| FOther Char Format -- [a-zA-Z0-9]
| FEnd --
format : List Char -> Format
@puffnfresh
puffnfresh / Monoid.rs
Last active January 7, 2024 10:17
Monoid trait and implementations in Rust
trait Semigroup {
fn mappend(&self, b: Self) -> Self;
}
trait Monoid: Semigroup {
fn mempty() -> Self;
}
impl Semigroup for int {
fn mappend(&self, b: int) -> int { *self + b }
@puffnfresh
puffnfresh / nix-example.sh
Last active February 22, 2023 04:22
Using Nix from AUR on Arch Linux
#!/bin/sh
## Or use an AUR helper, e.g.
## sudo aura -A nix
sudo pacman -S base-devel git
git clone https://aur.archlinux.org/nix.git
cd nix
makepkg -s
sudo pacman -U nix-*.pkg.tar.xz
@puffnfresh
puffnfresh / CGSSpaces.h
Last active February 20, 2023 17:57
Header for undocumented Spaces APIs
#include <Carbon/Carbon.h>
typedef void *CGSConnectionID;
extern CGSConnectionID _CGSDefaultConnection(void);
#define CGSDefaultConnection _CGSDefaultConnection()
typedef uint64_t CGSSpace;
typedef enum _CGSSpaceType {
kCGSSpaceUser,
kCGSSpaceFullscreen,
@puffnfresh
puffnfresh / Monoid.v
Created April 24, 2014 15:08
Verified monoid in Coq.
Inductive bool : Type :=
| true : bool
| false : bool.
Class Monoid (A : Type) :=
{
empty : A ;
append : A -> A -> A ;
left_neutrality : forall x, append empty x = x ;
@puffnfresh
puffnfresh / currying.js
Created September 7, 2012 07:13
Support for both curried and uncurried application in functional JavaScript
function curry(f) {
return function(x) {
var g = f.bind(this, x);
if(g.length == 0) return g();
if(arguments.length > 1) return curry(g).apply(this, [].slice.call(arguments, 1));
return curry(g);
};
}
var sum = curry(function(x, y) {
@puffnfresh
puffnfresh / covariant.ts
Created October 1, 2012 17:06
Covariant arrays. Blurgh.
// Compiles fine even though the code is broken.
// This is because arrays are covariant and mutable.
//
// TypeScript team: Please fix either of those things. Preferably mutability :)
class Animal {}
class Snake extends Animal {
slither() {
alert("Slithering!")
<12>[ 7.735764] [4: loader: 1] D, [2021-10-27T10:57:19.822873//1.7457 #1] DEBUG -- : Looking to run task Tasks::SetupGadgetMode...
<12>[ 7.735846] [4: loader: 1] I, [2021-10-27T10:57:19.822956//1.7458 #1] INFO -- : Running Tasks::SetupGadgetMode...
<12>[ 7.736253] [4: loader: 1] I, [2021-10-27T10:57:19.823001//1.7458 #1] INFO -- : Configuring USB Gadget.
<12>[ 7.736428] [4: loader: 1] D, [2021-10-27T10:57:19.823539//1.7464 #1] DEBUG -- : $ mkdir -p /sys/kernel/config/usb_gadget/g1/strings/0x409
<12>[ 7.736837] [4: loader: 1] D, [2021-10-27T10:57:19.823948//1.7468 #1] DEBUG -- : $ echo "0x04E8" > /sys/kernel/config/usb_gadget/g1/idVendor
<12>[ 7.737071] [4: loader: 1] D, [2021-10-27T10:57:19.824180//1.7470 #1] DEBUG -- : $ echo "0x6860" > /sys/kernel/config/usb_gadget/g1/idProduct
<12>[ 7.737304] [4: loader: 1] D, [2021-10-27T10:57:19.824415//1.7472 #1] DEBUG -- : $ echo "samsung-dreamlte" > /sys/kern