I hereby claim:
- I am talyian on github.
- I am talyian (https://keybase.io/talyian) on keybase.
- I have a public key ASDR2l3g4aL0kQBiQKSM6P7XXVJNmdC2lz5sYYqMog3DOwo
To claim this, I am signing this object:
#r "System.Drawing" | |
#r "OpenTK" | |
open OpenTK | |
open OpenTK.Graphics | |
open OpenTK.Graphics.OpenGL4 | |
let window = new GameWindow (400,400, | |
GraphicsMode.Default, "", | |
GameWindowFlags.Default, | |
DisplayDevice.Default, |
I hereby claim:
To claim this, I am signing this object:
Breve was designed as a backwards-compatible Blitz replacement that does safe context-aware sanitization. | |
The current architecture uses Blitz's parser frontend + Latte as a context-aware backend to achieve this goal. This was because I figured writing a context-aware HTML+macro parser was harder than re-implementing Blitz's logic flows (blocks, variable lookups, partial templates, etc.) in Latte. | |
As it turns out, reimplementing logic is a difficult problem. An alternate solution would be to write our own Blitz-compatible frontend that just adds context-aware output and delegates to Blitz for the logic implementation. This is a Proof of concept that shows it isn't that bad in a language that makes writing parsers easy. |
EVAL=(lambda F,B,V,P,T:lambda e:F(T(e),F,P,B(B,V))[0])( | |
lambda t,f,p,b: [p(p,t,(lambda x:b(('+','-'),b(('*','/'),x))))], | |
lambda b,e: lambda ops,t,i=0: t if i >= len(t) else b(b,e)(ops,(t.__setslice__(i-1,i+2,[e(t[i],t[i-1],t[i+1])]) or t),i) if t[i] in ops else b(b,e)(ops,t,i+1), | |
lambda o,x,y: {'+':lambda a,b:a+b, '-':lambda a,b:a-b, '*':lambda a,b:a*b, '/':lambda a,b:a/b}[o](float(x), float(y)), | |
lambda p, t, f: f((lambda s,e:t.__setslice__(s,e+1,[p(p,t[s+1:e], f)]) or t)(t.index('('),len(t)-1-t[::-1].index(')')) if '(' in t else t)[0], | |
lambda e: [x for x in __import__('re').split('(\\d+|.)', e.replace(' ', '')) if x], | |
) | |
print EVAL("3 - 5 - 4 - 3"); | |
print EVAL("3 * 5 + 4 / 3"); | |
print EVAL("3 * (5 + 4) / 2"); |
// The Computer Language Benchmarks Game | |
// http://benchmarksgame.alioth.debian.org/ | |
// | |
// contributed by Reed Adams | |
// *reset* | |
open System | |
type Node = |
<style>body { background: black; } #cv { display:block; margin:auto; }</style> | |
<canvas id='cv' width='800' height='800'></canvas> | |
<script id=frag type='x-shader/fragment'> | |
precision highp float; | |
varying vec2 _pos; | |
void main() { | |
vec2 c = _pos * 1.5 - vec2(0.7, 0), z; | |
for(int i = 0; i < 64; i++) { | |
z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c; | |
gl_FragColor = vec4(vec3((float(i) - log(log(length(z)))) / 64.0), 1); |
#include <ESP8266WiFi.h> | |
const int BUZZER_INPUT_IO = 5; | |
const int DOOR_OUTPUT_IO = 4; | |
const int LED_IO = 0; | |
enum { STARTING, READY, NOTIFYING, OPENING }; | |
void setup() { | |
Serial.begin(115200); |
#nowarn "9" | |
open System | |
open System.Runtime.InteropServices | |
[<StructLayout(LayoutKind.Sequential)>] | |
type DEVMODEInfo = struct | |
[<MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)>] | |
[<DefaultValue>] val mutable dmDeviceName : string | |
[<DefaultValue>] val mutable dmSpecVersion: int16; | |
[<DefaultValue>] val mutable dmDriverVersion: int16; |
Advent of Code 2017 Solutions |
jimmy@4f9659dd76f5:~$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF | |
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.I6Cq8DlByE --trustdb-name /etc/apt//trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-security-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-stable.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-squeeze-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-squeeze-stable.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-wheezy-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-wheezy-stable.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF | |
gpg: requesting key D3D831EF from hkp server keyserver.ubuntu.com | |
gpg: /etc/apt//trustd |