Skip to content

Instantly share code, notes, and snippets.

@torgeir
torgeir / traffic-data-api.clj
Last active November 1, 2019 14:15
Norwegian Public Roads Administration's Traffic Data API from clojure
#!/usr/bin/env boot
(set-env!
:dependencies '[[org.clojure/clojure "1.10.0"]
[org.clojure/data.json "0.2.6"]
[district0x/graphql-query "1.0.6"]
[http-kit "2.3.0"]
[clj-gatling "0.13.0"]
[clj-time "0.15.0"]])
@torgeir
torgeir / fix-grub-config-gone-bad-steps.sh
Created October 27, 2019 09:26
Fix grub config gone bad ubuntu
# make the bios boot from a live usb stick
# mount the filesystem and change to it
sudo mkdir /mnt/root
sudo mount /dev/sd2 /mnt/root
sudo mount -t proc none /mnt/root/proc
sudo mount -o bind /dev /mnt/root/dev
sudo chroot /mnt/root /bin/bash
# fix the issues
@torgeir
torgeir / boot-physical-win-disk-from-linux.sh
Created October 20, 2019 16:54
Boot physical win disk from linux
# find e.g. Windows 8 (on /dev/sda2)
fgrep menuentry /boot/grub/grub.cfg
# MAKE SURE NOT TO BOOT FROM THE OS YOU ARE ALREADY IN!!
sudo vim /etc/default/grub
# modify it, like
# GRUB_DEFAULT=0
GRUB_DEFAULT="Windows 8 (on /dev/sda2)"
# then create an image for your disk
@torgeir
torgeir / sketch_lines.cljs
Last active September 18, 2019 10:59
Generative art: Lines between two random lines inverted, repeat
(ns sketches.sketch-lines
(:require [quil.core :as q]
[quil.middleware :as m]
[lib.key-press-handlers :refer [save-image]]
[sketches.palette :refer [find-palette rand-palette]]))
(def body (.-body js/document))
@torgeir
torgeir / compile.cljs
Last active March 9, 2019 10:22
Using clojurescript to compile clojurescript
(ns example.core
(:require [cljs.js :as cjs]
[cljs.analyzer :as ana :include-macros true]
[cljs.reader :as r]
[cljs.pprint :as pprint]))
(enable-console-print!)
(let [src "(ns t.math)
(defn increase [n] (inc n))"
@torgeir
torgeir / torg.ds
Last active February 17, 2019 10:24
devilspie workspace layout
/*
Lookup geometry: /usr/bin/xwininfo
Backup: https://gist.github.com/torgeir/401084929e678640b0cd36b3c92b5f03
*/
(and (is (application_name) "Firefox")
(begin
(set_workspace 1)
(geometry "1387x1138+0-32")))
(and (is (application_name) "emacs-snapshot")
@torgeir
torgeir / dependency-stats.js
Created September 26, 2018 15:53
Lookup various github stats from npm package name; stars, contributors, open issues/prs etc.
const r2 = require("r2");
const npm = require("npm");
const { spawn } = require("child_process");
const [_, __, accessToken, repo] = process.argv;
const shellCmdStdoutToObject = (cmd, args) =>
new Promise(function(resolve, reject) {
const child = spawn(cmd, args);
let result = "";
@torgeir
torgeir / myth-loader.js
Created May 3, 2018 11:31
webpack myth loader, a myth loader that supports @import declarations
const path = require('path');
const myth = require('myth');
const globby = require('globby');
const loaderUtils = require('loader-utils');
const resolve = function () {
const p = [__dirname].concat(Array.from(arguments));
return path.resolve.apply(path, p);
};
@torgeir
torgeir / hyperappish.js
Last active April 21, 2018 20:58
A minimal, hyperapp-like, wired action, state handling thingy that works with plain react components
import React from "react";
import ReactDOM from "react-dom";
import Rx from "rxjs/Rx";
// hyperappish
const identity = v => v;
const doto = (o, fn) => (fn(o), o);
const getIn = (obj, [k, ...ks]) => (ks.length == 0) ? obj[k] : getIn(obj[k], ks);
@torgeir
torgeir / lazy-fetch-with-getter.js
Last active March 14, 2018 09:29
Js lazy fetch with getter
const wait = s => new Promise((resolve) => setTimeout(resolve, s * 1000))
const state = {};
dataField(state, "ip", "http://ip.jsontest.com/");
console.log(state.ip);
wait(2)
.then(() => state.ip)
.then(console.log);