Skip to content

Instantly share code, notes, and snippets.

View tcr's full-sized avatar
🚮
bad command or file name

Tim Ryan tcr

🚮
bad command or file name
View GitHub Profile
@tcr
tcr / code.html
Created October 26, 2011 23:02
How do different browsers handle empty paragraphs/blocks using contentEditable?
<!-- most modern browsers -->
<p><br></p>
<!-- ie9 -->
<p></p>
<!-- ie7-8 -->
<script>
document.body.appendChild(document.createElement('p'))
</script>
@tcr
tcr / async.coffee
Created July 18, 2011 21:13
Serial/Parallel functions in CoffeeScript
# Asynchronous DSL for CoffeeScript
serial = (f) ->
next = -> arr.shift().apply(null, arguments) if arr.length
arr = (v for k, v of f(next))
next()
null
parallel = (f, after = ->) ->
res = {}; arrc = 0
@tcr
tcr / code.js
Created October 26, 2011 06:22
How can you use Mustache with Node.js?
var express = require('express');
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.set('view engine', 'mustache');
app.set('views', __dirname + '/views');
app.register(".mustache", require('stache'));
@tcr
tcr / mpcadet.py
Last active August 24, 2020 14:58
Monoprice Cadet Wifi-only Upload Script in Python
# MonoPrice Cadet script for uploading .gcode files
# and listing the contents of the SD card
#
# Usage: python mpcadet.py 192.168.1.X
#
# Uploads the local CADET.gcode file in the same directory
# as your script to the device and then kicks off a build.
#
# A limited number of GCODE commands seem possible:
# https://marlinfw.org/docs/gcode/M023.html
// Type output by wasm-bindgen to the .d.ts bindings. No JS code is generated, just type definitions
export type ControllerCommand =
| { "Keypress": { key_code: number, meta_key: boolean, shift_key: boolean, alt_key: boolean, } }
| { "Button": { button: number, } }
| { "Character": { char_code: number, } }
| { "InsertText": { text: string, } }
| { "RenameGroup": { tag: string, curspan: any, } }
| { "Cursor": { focus: any, anchor: any, } }
| { "RandomTarget": { position: number, } }
@tcr
tcr / sprite
Created July 9, 2018 06:10
8bitworkshop.com {"platform":"vcs"}
processor 6502
include "vcs.h"
include "macro.h"
org $f000
; Sprites are a tricky beast on the 2600.
; You only have two of them.
; They are 8 bits wide and 1 bit high.
; There's no way to position the X or Y coordinate directly.
#![allow(unused)]
extern crate ron;
extern crate serde;
#[macro_use] extern crate serde_derive;
extern crate serde_with;
use serde::{Deserialize, Serialize, Serializer, Deserializer};
#[derive(Serialize, Deserialize)]
@tcr
tcr / rouille_with_juniper.rs
Created May 3, 2018 04:01
rouille_with_juniper.rs
#!/usr/bin/env run-cargo-script
//! ```cargo
//! [dependencies]
//! juniper = "*"
//! rouille = "*"
//! serde_json = "*"
//! serde = "*"
//! ```
#[macro_use] extern crate rouille;
make an itunes backup
Go to `~/Library/Application Support/MobileSync/Backup`
Find the backup id folder
Look up `Manifest.db` in that dir to identify Files row with `relativePath=Library/SpringBoard/IconState.plist` and its `fileID`
in the `<backup_id>/<first two digits>/<that hash>` file, run
// Declare your union variants
// Easy to name variant contructors + define tags in one place
function Age(age: number) {
return { tag: 'Age' as 'Age', age }
}
function Name(name: string) {
return { tag: 'Name' as 'Name', name }
}