Skip to content

Instantly share code, notes, and snippets.

View mnem's full-sized avatar

Dave Clayton-Wagner mnem

View GitHub Profile

Recursive mutexes are a hack

Recursive mutexes are a hack. There's nothing wrong with using them, but they're a crutch. Got a broken leg or library? Fine, use the crutch. But at least be aware that you're using a crutch, and why; and once in a while check out the leg (or library) to be sure you still need the crutch. And if it's not healing up, go see a doctor, because that's just not OK. When you have no choice, there's no shame in using a crutch... but you can't run very well on a crutch, and you'll also be slowing down anyone who depends on you.

/System/iOSSupport
├── System
│   └── Library
│   ├── AccessibilityBundles
│   │   ├── AVFoundation.axbundle
│   │   ├── AVKit.axbundle
│   │   ├── AccessibilitySettingsLoader.bundle
│   │   ├── AdSheet.axbundle
│   │   ├── AddressBook-Assistant.axbundle
│   │   ├── AddressBookUIFramework.axbundle
@mnem
mnem / man xccov
Last active October 4, 2021 12:10
xccov(1) xccov(1)
NAME
xccov - view Xcode coverage data in human-readable or machine-parseable format.
SYNOPSIS
xccov view [--only-targets | --files-for-target target_name | --functions-for-file name_or_path]
@mnem
mnem / 00-setting-up-a-scaleway-ghost-server.md
Last active May 17, 2021 00:08
Setting up ghost on scaleway because the app image they have is really rather old.

Server image

I use Ubuntu 16.04/Ubuntu Xenial.

Setup server

Add a new user who isn't root, but who can sudo:

  1. Update all the things: apt-get update && apt-get dist-upgrade && apt-get autoremove
  2. Reboot, just in case: shutdown -r now
@mnem
mnem / heterogenous.swift
Created August 30, 2017 18:43
Decoding values from silly heterogenous JSON arrays.
//: Playground - noun: a place where people can play
import Foundation
let json = """
[
{"person":{"name":"foo", "age":20}},
{"house":{"size":"large"}}
]
""".data(using: .utf8)!
@mnem
mnem / foo.cpp
Last active August 29, 2015 14:21
//
// main.cpp
// jpm-code-dojo-2015-05-cpp
//
// Created by David Wagner on 18/05/2015.
// Copyright (c) 2015 David Wagner. All rights reserved.
//
#include <iostream>
#include <set>
import Cocoa
//: Types to make my typing life simpler
typealias Cell = Int
typealias Board = [Cell]
typealias CellPosition = Int
typealias PackedBoard = Int64
typealias AddNeighbours = (Board, CellPosition) -> Cell
typealias SwapNeighbours = (Board, CellPosition) -> Board
typealias Mutator = (add:AddNeighbours, swap:SwapNeighbours)
@mnem
mnem / NAHMainTable.h
Created May 4, 2015 20:38
An opaque navigation bar with an arbitrary background color and single pixel divider color on iOS 7+. This is more faff than it should be.
#import <UIKit/UIKit.h>
@interface NAHMainTable : UITableViewController
@end
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewRowAction *moreAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"More" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){
// maybe show an action sheet with more options
[self.tableView setEditing:NO];
}];
moreAction.backgroundColor = [UIColor lightGrayColor];
UITableViewRowAction *blurAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Blur" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){
[self.tableView setEditing:NO];
}];
### Keybase proof
I hereby claim:
* I am mnem on github.
* I am mnem (https://keybase.io/mnem) on keybase.
* I have a public key whose fingerprint is 1D88 0A68 B233 8A02 1B92 393A 17C9 EF8D 13F7 7DC2
To claim this, I am signing this object: