Skip to content

Instantly share code, notes, and snippets.

@plugnburn
plugnburn / LICENSE.txt
Last active December 20, 2015 13:59 — forked from 140bytes/LICENSE.txt
Whitespace text encoder
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2013 plugnburn
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
@plugnburn
plugnburn / index.md
Last active December 20, 2015 14:49
MSM (Mutating Stack Machine) reference implementation

MSM programming language reference implementation

Overview

MSM ( Mutating Stack Machine ) is a minimalist self-modifying, stack-based esoteric programming language. It was designed to create the smallest usable stack machine implementation ever possible in JavaScript.

Language structure

@plugnburn
plugnburn / LICENSE.txt
Last active December 20, 2015 15:29 — forked from 140bytes/LICENSE.txt
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2013 plugnburn
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
@plugnburn
plugnburn / bitspace.js
Created August 12, 2013 07:56
BitSpace text steganography bookmarklet
//BitSpace bookmarklet
//Just add the below URL to your bookmark bar
//To hide the text into your input, focus on your input field and call the bookmarklet, then input the text to hide
//To reveal the text, select the text in non-input field and call the bookmarklet
javascript:(function(z){BitSpace=eval('({hide:Yh,i,d,e){d=(h=h.split("").map(Yn){Xn.charCodeAt(0).toString(2)Z[+c]}).join("")}).join(" ")).length;e=0;Xi.replace(/ /g,Y){Xe<d?h[e++]:" "})},reveal:Yr,v,l){if(r=r.match(/[ \\u2004\\u2008]/g)){for(v=0,l="";v<r.length;v++)l+=r[v];Xl.split(" ").map(Ys){XString.fromCharCode(parseInt(sZ.indexOf(c)}).join(""),2))}).join("")}}})'.replace(/Z/g,'.split("").map(Yc){X["\\u2004","\\u2008"]').replace(/Y/g,"function(").replace(/X/g,"return ")),z=document.activeElement;z.value?z.value=BitSpace.hide(prompt("Text to hide"),z.value):alert(BitSpace.reveal(getSelection()+""))})()
@plugnburn
plugnburn / LICENSE.txt
Last active December 21, 2015 21:08 — forked from 140bytes/LICENSE.txt
Downloader.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2013 plugnburn
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
@plugnburn
plugnburn / index.html
Created October 3, 2013 17:41
Pong999 - adaptive multiplayer pong in 999 bytes. Controls: A/Z keys for player 1, Up/Down arrows for player 2. Play at http://bl.ocks.org/plugnburn/raw/6813874/
<!DOCTYPE html><title>Pong</title><body onload='R=window.requestAnimationFrame||function(c){setTimeout(c,16)};Z=document.querySelector("canvas"),p=s=0;(onresize=function(){H=(K=Z.height=innerHeight)/5,W=(J=Z.width=innerWidth)>>6,M=W>>1})();(D=function(){Y=Z.getContext("2d"),Y.font="40pt monospace",Y.textBaseline="top",O=P=(K-H)>>1,x=M+W+1,y=O+(H-W)>>1,U=I=0,B=V=4})();onkeydown=function(e){eval({65:"U=-4",90:"U=4",38:"I=-4",40:"I=4"}[e.which])};onkeyup=function(e){eval({65:"U",90:"U",38:"I",40:"I"}[e.which]+"=0")};R(Q=function(){R(Q);with(Math)A=abs,O=min(max(O+U,M),z=K-M-H),P=min(max(P+I,M),z);(y<M||y>K-M-W)&&(B=-B);x<=M+W&&(y+W>=O&&y<=O+H?V=A(U)-V:D(++s)),x>=J-M-W-W&&(y+W>=P&&y<=P+H?V=-V-A(I):D(++p));Y.F=Y.fillRect;with(Y)fillStyle="#000",F(0,0,J,K),fillStyle="#eee",F((J-W)/2,0,W,K),F(M,O,W,H),F(J-W-M,P,W,H),F(x+=V,y+=B,W,W),textAlign="right",fillText(p,J/2-W-M,M),textAlign="left",fillText(s,J/2+W+M,M)})'><canvas style=position:fixed;top:0;left:0>Use a browser, moron!</canvas></body>
@plugnburn
plugnburn / democode.js
Last active December 25, 2015 19:09
Some democode routines (will be updated from time to time)
//bytebeat: beat(pattern,length)
beat=function(b,e,a,t){return(a="data")+":audio/wav;base64,UklGRl9fX19XQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgA"+btoa(eval("for(t=0;++t<e*8e3;)a+=String.fromCharCode(255&("+b+"))"))}
//bytebeat with math: beatm(pattern,length)
beatm=function(b,e,a,t){return(a="data")+":audio/wav;base64,UklGRl9fX19XQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgA"+btoa(eval("with(Math)for(t=0;++t<e*8e3;)a+=String.fromCharCode(255&("+b+"))"))}
//konamicode: konami(callback)
konami=function(k,c){onkeyup=function(e){/113302022928$/.test(c+=[e.which-37])&&k()}}
//circle gesture detection: circgest(callback[, clockwiseflag])
//clockwiseflag: 1 - counterclockwise, 0 or absent - clockwise
circgest=function(f,a,v,i,c,o){c=v="";addEventListener("mousemove",function(e){o&&(i=2*(e.screenX>o.screenX)+(e.screenY>o.screenY),i^c&&(v+=i,c=i),(a?/3201$/:/2310$/).test(v)&&(f(),v=""));o=e},0)}
@plugnburn
plugnburn / index.html
Created February 23, 2016 05:48
Malevich
<div style="background:black;width:90vmin;height:90vmin;position:fixed;left:50%;top:50%;transform:translate(-50%,-50%)"></div>

ESVer: conditionally load your scripts depending on the target platform

ESVer is a tiny and convenient helper script to get you out of the overhead hell for the browsers that don't really need it. It detects whether a browser supports ES6/ES2015 standard natively and allows you to load different script versions depending on the result of this check.

Usage

Include your scripts like this:

@plugnburn
plugnburn / README.md
Last active March 27, 2016 16:09
Psto: a single package.json to scaffold and run your single-post web page in no time

Psto

This is a no-brainer to get your single-post web page up and running. Just have to have Node and NPM installed, and /bin/sh pointing to Bash shell. Styling is powered by 999.css.

Steps:

  1. Place the below package.json into an empty directory and enter this directory in your command line prompt.
  2. Run npm run scaffold.
  3. Edit domain, title and author in the config section of your package.json. The domain may be either a Surge subdomain or your own (please refer to the Surge docs). If you're going to host your page yourself, you may leave domain empty.