Skip to content

Instantly share code, notes, and snippets.

Daniel Buckmaster crabmusket

Block or report user

Report or block crabmusket

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
crabmusket /
Last active Aug 12, 2019
Deno micro modules index page

Deno micro modules

Each of these modules is a single file consisting of no more than a page or two of code, which provide some useful 'generic' feature. These modules could be copied as-is into any TypeScript project, but they're designed to work with Deno. Deno's URL loading makes it very easy to import them.

crabmusket /
Last active Aug 12, 2019
Async semaphore utility class for Deno


An asynchronous semaphore utility class meant to work with Deno. You can use it to implement rate-limiting and other concurrency patterns.

Usage example:

import { Semaphore } from "";
crabmusket / json.ts
Last active Oct 1, 2019
JSON utilities for Deno
View json.ts
/** For the spec of the JSON type, see */
export type JsonValue = JsonObject | JsonArray | number | string | boolean | null;
/** JSON objects can have any string key. */
export interface JsonObject {[key: string]: JsonValue};
/** For the explanation of this type, see */
export interface JsonArray extends Array<JsonValue> {};
/** Narrow the type of a JsonValue to check if it's an object. */
crabmusket /
Last active Aug 7, 2019
String title case function for Deno


Usage example:

import { titleCase } from "";

console.log(titleCase("deno is AWESOME"));
console.log(titleCase("words-can contain_punctuation"));
console.log(titleCase("  spacing is     preserved"));
crabmusket / Dockerfile
Last active Aug 9, 2019
Build Deno in a Docker container
View Dockerfile
FROM ubuntu:16.04
RUN apt-get update && apt-get install \
build-essential \
clang-3.8 \
curl \
git \
libxml2 \
python-dev \
crabmusket /
Last active May 9, 2019
PHP throwables example

PHP exceptions and errors

In PHP, Exceptions can be caught:

try {
    throw new \DomainException('input out of bounds');
} catch (\Exception $e) {
    echo "got exception\n";
} finally {
crabmusket / index.html
Created Mar 19, 2019 — forked from arrayjam/index.html
Australia Postcode Decoder
View index.html
<!DOCTYPE html>
<meta charset="utf-8">
text, label {
font-family: sans-serif;
label {
position: absolute;
text-align: center;
crabmusket / material_design_colors_2014.scss
Last active Jan 12, 2019
Google's 2014 material design colour palette as SCSS variables. Because sometimes you just need a bunch of variables. Colours taken from
View material_design_colors_2014.scss
$md-col-red-50: #ffebee;
$md-col-red-100: #ffcdd2;
$md-col-red-200: #ef9a9a;
$md-col-red-300: #e57373;
$md-col-red-400: #ef5350;
$md-col-red-500: #f44336;
$md-col-red-600: #e53935;
$md-col-red-700: #d32f2f;
$md-col-red-800: #c62828;
$md-col-red-900: #b71c1c;
crabmusket / MJML.php
Last active Aug 19, 2018
MJML emails in Laravel
View MJML.php
namespace App\Mail;
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;
use Symfony\Component\Process\Exception\RuntimeException;
use Illuminate\Contracts\View\Factory as ViewFactory;
use Illuminate\Support\HtmlString;

JSON-RPC pipeline batches

Typical RPC implementation

Say we want to implement an RPC service for basic maths operations. For example, let's calculate the value of ln(e^2). This calculation has several steps in our maths API:

  1. Get the value of e
  2. Square e
You can’t perform that action at this time.