Skip to content

Instantly share code, notes, and snippets.

Verifying my Blockstack ID is secured with the address 1PXdYDzCh1mhWfH69pPYqhVZUhRnAfefVK https://explorer.blockstack.org/address/1PXdYDzCh1mhWfH69pPYqhVZUhRnAfefVK
@strangemonad
strangemonad / proposal.md
Last active May 4, 2017 18:51
Should ml basis files be standardized?

Motivation

Programming with SML "in the very large" is still cumbersome. Although tooling in the form of ML basis files and smackage helps, those tools aren't standard and they only provide assistance at the tooling level rather than the language level.

Here are a few motivating examples where SML currently falls short:

  • if I want to consume a 3rd party library, it hopefully uses a compatible build mechanism. Additionally, a library that uses mlbasis files doesn't necessarily have a "default" basis file. e.g. even if I consume a library like cmyacc via smackage I have to rely on convention and depend on the cmyacc.mlb file.

  • how do teams of engineers within a company compose a working system. Since mlbasis files are a source level dependency mechanism, the consumers of a library end up depending on all signatures and structures with no separation between the modules that belong to the public interface and the modules that belong to the implementation.

### Keybase proof
I hereby claim:
* I am strangemonad on github.
* I am strangemonad (https://keybase.io/strangemonad) on keybase.
* I have a public key whose fingerprint is 521C A954 9503 D982 A391 F223 6E1A 3394 9DF9 66D6
To claim this, I am signing this object:
@strangemonad
strangemonad / Bugs.md
Created August 18, 2012 19:49
My current versions of boot.l, emit.l, and eval.l that allow compiling to a working evaluator (note: file extensions are off to make gist syntax colouring work properly)

My starting point was the published sources for Maru 2.1 here:
http://piumarta.com/software/maru/maru-2.1.tar.gz

I've done a bunch of tweaking, pulling everything apart and rebuilding my interpretation of a lot of the pieces so I could learn along the way. Hopefully, this is a good distillation of the bugs I needed to fix to get things working. For reference, my setup is the following:

OS X 10.7
llvm-gcc (that comes with xcode)
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)

Issue in the bootstrap C-implementation of the interpreter:

@strangemonad
strangemonad / reflector.py
Created July 6, 2012 19:42
iPython-reflector - Remote python execution via an iPython kernel
#! /usr/bin/env python
import sys
import time
from IPython.lib.kernel import find_connection_file
from IPython.zmq.blockingkernelmanager import BlockingKernelManager
def is_idle(sub_message, last_idle):
if sub_message['msg_type'] != 'status':
@strangemonad
strangemonad / notify.py
Created July 1, 2012 22:26
Notify - Primitive, passive event notifications via imap mailboxes and growl
#! /usr/bin/env python
import os
import imaplib
import re
import gntp.notifier
from sexpr import *
@strangemonad
strangemonad / LICENSE.txt
Created October 19, 2011 03:48 — forked from 140bytes/LICENSE.txt
140byt.es -- Click ↑↑ fork ↑↑ to play!
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2011 YOUR_NAME_HERE <YOUR_URL_HERE>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
@strangemonad
strangemonad / index.html
Created July 30, 2011 17:34
add CoffeeScript.ready() to browser.coffee
~/Dropbox/Development/external/coffee-script stable *$1 g diff src/
diff --git a/src/browser.coffee b/src/browser.coffee
index bd35d4c..a439acc 100644
--- a/src/browser.coffee
+++ b/src/browser.coffee
@@ -24,6 +24,9 @@ CoffeeScript.load = (url, options) ->
CoffeeScript.run xhr.responseText, options if xhr.readyState is 4
xhr.send null
+CoffeeScript.ready = (callback) ->
def score(dice)
score = 0
dice.uniq.each do |face|
dice_of_current_face = dice.select {|n| n == face}
if dice_of_current_face.size >= 3
score += face == 1? 1000 : 100 * face
dice_of_current_face = dice_of_current_face.slice(3, 2)
end
# ===========================================================================
# Project: Abbot - SproutCore Build Tools
# Copyright: ©2009 Apple Inc.
# portions copyright @2006-2009 Sprout Systems, Inc.
# and contributors
# ===========================================================================
module SC
# Builder classes implement the more complex algorithms for building