Skip to content

Instantly share code, notes, and snippets.

View janispritzkau's full-sized avatar

Janis Pritzkau janispritzkau

View GitHub Profile
@janispritzkau
janispritzkau / ejs.ts
Created April 25, 2021 21:34
Deno EJS Template Engine
import { dirname, extname, resolve } from "https://deno.land/std/path/mod.ts";
const MODE_EVAL = 0;
const MODE_ESCAPED = 1;
const MODE_RAW = 2;
interface Range {
source: [number, number];
code: [number, number];
}
@janispritzkau
janispritzkau / analytics.js
Last active April 5, 2022 17:51
Minimal Google Analytics Script (677 bytes minified)
((document, location, navigator) => {
const domain = location.hostname.split(".")
const match = document.cookie.match(/(^|; ?)_ga=GA1\.\d\.(\d+\.\d+)(;|$)/)
// use existing client id or generate one
const cid = match ? match[2] : ~~(2147483648 * Math.random()) + "." + ~~(Date.now() / 1000)
// set cookie at highest possible domain level
for (let i = domain.length; i--;) {
const cookie = `_ga=GA1.${domain.length - i}.${cid}`
@janispritzkau
janispritzkau / index.html
Last active November 1, 2019 16:28
Rendering area chart with WebGL (1 million points)
<!DOCTYPE html>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WebGL Chart</title>
<span id="fps">Loading</span>
<canvas></canvas>
<style>
body {
@janispritzkau
janispritzkau / webgl-example.js
Last active June 15, 2023 08:35
Simple WebGL example with basic error handling
const canvas = document.querySelector("canvas")
canvas.width = 800, canvas.height = 600
canvas.style.width = `${canvas.width / devicePixelRatio}px`
const gl = canvas.getContext("webgl")
const vertexShader = gl.createShader(gl.VERTEX_SHADER)
const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER)
gl.shaderSource(vertexShader, `
@janispritzkau
janispritzkau / game-of-life.html
Last active August 21, 2019 18:42
Code golf: Game of Life (286 bytes)
<canvas id="c"><script>t=c.getContext("2d"),s=150,a=[];for(i=s*s;i--;)a[i]=Math.random()<.1;setInterval(_=>{b=[],t.clearRect(0,0,s,s);for(i=s*s;i--;){n=0;for(j=9;j--;)n+=a[(~~(i/s)+s+j%3-1)%s*s+(i+s+~~(j/3)-1)%s];b[i]=n==3||n-a[i]==3,a[i]&&t.fillRect((i%s),~~(i/s),1,1)}a=b},s)</script>