Skip to content

Instantly share code, notes, and snippets.

@adam-zethraeus
adam-zethraeus / gist:4583560
Created January 21, 2013 04:17
Stick it in your .bash_profile on your mac to get QuickLook from the terminal.
alias ql='qlmanage -p "$@" > /dev/null'
@adam-zethraeus
adam-zethraeus / $ Unit tests, access control, state, and statics
Last active January 3, 2020 22:22
A bad, stateful, and impossible to unit test, 'onboarding manger'.
-
private func validatePassword() {
self.passwordIsValid = false
self.passwordIssue = nil
guard let username = self.username,
let email = self.email,
let phoneNumber = self.phoneNumber,
let password = self.password
else {
return
func test_PasswordCanNotContainUsername() {
let mockPasswordCollectorLauncher = MockPasswordCollectorLauncher()
let mockListener = MockOnboardingManagerListener()
let onboardingManager = BadOnboardingManager(passwordCollectorLauncher: mockPasswordCollectorLauncher)
onboardingManager.listener = mockListener
onboardingManager.start()
// TODO: assert the username collector launches now.
onboardingManager.usernameCollectorReturned(username: "ValidUsername")
func testPasswordCanNotContainUsername() {
let (didPass, issue) = OnboardingManager.validatePassword(password: "ValidUsername$123",
username: "ValidUsername",
email: "valid@example.com",
phoneNumber: "+11235554321")
XCTAssertFalse(didPass)
XCTAssertEqual(issue, PasswordIssue.containsUsername)
}
@adam-zethraeus
adam-zethraeus / copy_url_to_selection_bookmarklet.js
Last active September 10, 2020 00:48
a bookmarklet to copy a url to the current page, with the current selection highlighted. (Chrome only. Because other browser care about timing attacks more than your Google search result experience.)
javascript:
let tempInput = document.createElement("input");
tempInput.value = window.location.href + `#:~:text=${window.getSelection().toString()}`;
document.body.appendChild(tempInput);
tempInput.select();
document.execCommand("copy");
document.body.removeChild(tempInput);
@adam-zethraeus
adam-zethraeus / useViewportSpace.ts
Created December 2, 2020 22:51
useViewportSpace.ts
import { useState, useEffect, MutableRefObject } from 'react';
type Location = { x: number; y: number };
type Size = { width: number; height: number };
type Space = { location: Location; size: Size };
// The viewport information for the passed Div.
const useViewportSpace = (
scrollArea: MutableRefObject<HTMLDivElement | undefined>,
): { content?: Space; viewport?: Space } => {
@adam-zethraeus
adam-zethraeus / dndkill.sh
Created April 28, 2021 07:26
dndkill — disable macOS Big Sur Do-Not-Disturb (even if scheduled)
#!/bin/bash
rootPlist=$(plutil -extract dnd_prefs xml1 -o - /Users/"$USER"/Library/Preferences/com.apple.ncprefs.plist)
dataPlistB64=$(echo $rootPlist | xmllint --xpath "string(//data)" - )
dataPlist=$(echo $dataPlistB64 | base64 --decode | plutil -convert xml1 - -o -)
scheduleDict=$(echo $dataPlist | xmllint --xpath "//dict/key[text()='scheduledTime']/following-sibling::*[1]" -)
userPrefDict=$(echo $dataPlist | xmllint --xpath "//dict/key[text()='userPref']/following-sibling::*[1]" -)
end=$(echo $scheduleDict | xmllint --xpath "number(//dict/key[text()='end']/following-sibling::*[1])" -)
@adam-zethraeus
adam-zethraeus / emoji-trie.json
Last active March 7, 2023 09:29
json emoji trie from annotations_en.xml
This file has been truncated, but you can view the full file.
{
"c": "*",
"e": [],
"n": {
"(": {
"c": "(",
"e": [],
"n": {
"b": {
"c": "b",
@adam-zethraeus
adam-zethraeus / dot-graph-chat-bot.go
Created June 25, 2021 21:45
DOT graph → chatbot state machine
package main
/*
This program parses a DOT graph representing a chatbot's state machine.
It supports single-select, multiple-select, message-sends, and hooks into programs.
*/
import (
"fmt"
"gonum.org/v1/gonum/graph"