Skip to content

Instantly share code, notes, and snippets.

View xkr47's full-sized avatar

Jonas Berlin xkr47

View GitHub Profile
@xkr47
xkr47 / flowdock.css
Created September 6, 2019 04:39
Flowdock #css
/* make notifications darker - suitable for dark theme */
.msg-body {
color: #585860;
}
.comment-group-hover .msg-body {
color: #9090a0;
}
/* just restore default theme colour that gets overridden by the above for normal messages */
.msg-body > p, .msg-body ul {
@xkr47
xkr47 / message.js
Last active August 23, 2019 04:38
keybase ephemeral message test
// rendition of a message "test" set to expire in 30 seconds, as retrieved by json api after "exploding":
// $ keybase chat api -p -m '{"method": "read", "params": {"options": {"channel": {"name": "keybasefriends", "members_type": "team", "topic_name": "general", "pagination": {"num": 1}}}}}'
{
"msg": {
"id": 52853,
"conversation_id": "0000d5ba71470610a40b4d32af53a52775cc561589525d7b21bad9ec057b6aac",
"channel": {
"name": "keybasefriends",
"public": false,
"members_type": "team",
@xkr47
xkr47 / focusrite-scarlett-linux.md
Last active March 24, 2021 23:01
Focusrite Scarlett Linux support 2019-07-29

Focusrite Scarlett Linux support 2019-07-29

1st gen <2012

  • Solo ❓
  • Studio ❓
  • 2i2 ✅
  • 2i4 ✅
  • 6i6 1235:8012 ✅ since Linux 3.19
@xkr47
xkr47 / jsonmap
Last active October 26, 2018 08:52
My perl-based `jq` replacement
echo -n '{"a":5,"b":7}' | jsonmap -r '$_->{"a"}." and ".$_->{"b"}'
#!/usr/bin/perl
# usage: $0 [options] <perlcode> [<inputfile>]
#
# reads json from stdin/inputfile, or if -R given, reads whole input as a string
# perlcode gets the json/string as a perl object in $_
# return object from perlcode is encoded as json to stdout, or passed as-is if -r given
# pretty-printed by default, -c for compact
# all input/output is in UTF-8
@xkr47
xkr47 / README.md
Last active September 11, 2018 11:37
Handy script for generating a github "diff" url between two refs

Example:

$ github-diff origin/master 04ed4b
https://github.com/example/repo/compare/a418bcece3d540ad1d4864030635c2d4ae2628b3...04ed4b34bee0a2b2003f3744b772473a4c8b604b

Requires the commits to be available locally, so you might have to git fetch first.

@xkr47
xkr47 / ot-poi.txt
Last active June 9, 2019 19:36
Handy queries for Overpass Turbo - https://overpass-turbo.eu
// Handy search for POI objects - just swap `shop=kiosk` out for any `key=value` osm tag
(
node[shop=kiosk]({{bbox}});
way[shop=kiosk]({{bbox}});
rel[shop=kiosk]({{bbox}});
);
(._;>;);
out;
@xkr47
xkr47 / gulpfile.js
Last active August 17, 2017 11:41
Simple gulp debug transform
var gt = require('through-gulp');
//...
gulp.src("...")
.pipe(/*...*/)
.pipe(gt(function visitFile(file, enc, cb) {
console.log("file '" + file.path + "' contents: " + file.contents.toString());
cb(null, file);
}, function visitEnd(cb) {
console.log("No more files");
cb();
@xkr47
xkr47 / README.md
Last active August 3, 2020 22:02
Logitech TrackMan Marble FX scroll wheel patch for the Linux kernel

Logitech TrackMan Marble FX scroll wheel patch for the Linux kernel

NOTE I now have a standalone driver available here which is easier to install: https://github.com/xkr47/marblefx

This patch alters the usbmouse kernel driver to support a "scroll wheel mode" using the fourth button (the red button) when connected through a "ID 04d9:1400 Holtek Semiconductor, Inc. PS/2 keyboard + mouse controller" usb-to-ps2 adapter. No idea how things work with other adapters.

It seems the fourth button generates events, but the state of the button is not represented in any bits (at least by said usb-to-ps2 adapter).

@xkr47
xkr47 / acme-conf.json
Last active March 20, 2017 08:21
Brainstorming acme/letsencrypt configuration file
"acme": {
"certstorePath": "/etc/certs/",
"accounts": [
{
"id": "nitor-srv01",
"provider": "acme://letsencrypt.org/...",
"acceptedAgreement": "https://letsencrypt.org/.../Agreement_v1.2.3.pdf",
"certificates": [
{
"id": "conflu",
@xkr47
xkr47 / DynamicCertOptions.java
Last active July 28, 2020 16:25
An attempt to support TLS SNI in vertx with dynamic reconfiguration support
import io.vertx.core.Vertx;
import io.vertx.core.net.KeyCertOptions;
import javax.net.ssl.*;
import java.net.Socket;
import java.security.*;
import java.security.cert.X509Certificate;
public class DynamicCertOptions implements KeyCertOptions {