Skip to content

Instantly share code, notes, and snippets.


Alan Plum pluma

Block or report user

Report or block pluma

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
pluma / express-windows-sso.js
Last active Aug 22, 2019
Example for an express app implementing Windows SSO (SPNEGO/GSSAPI)
View express-windows-sso.js
"use strict";
const kerberos = require("kerberos");
const express = require("express");
const app = express();
// Make sure kerberos keytab is at /etc/krb5.keytab
// See
// for an example setup of a full kerberos dummy environment including a keytab
// If kerberos service name is HTTP/
pluma / profiles.json
Created Jul 17, 2019
Windows Terminal config with Night Owl theme and minor adjustments.
View profiles.json
"globals": {
"alwaysShowTabs": true,
"defaultProfile": "{2c4de342-38b7-51cf-b940-2309a097f518}",
"initialCols": 120,
"initialRows": 30,
"keybindings": [
"command": "closeTab",
"keys": ["ctrl+w"]
pluma / Loader.tsx
Last active Nov 28, 2017
Component for handling async data fetching with redux?
View Loader.tsx
import { Error, ErrorType } from "./Error";
import { Loading } from "./Loading";
import React from "react";
type LoaderProps = {
id: string;
error?: Object;
data: any;
isLoading: boolean;
pluma / devrant.css
Last active Nov 15, 2017
Want DevRant in full-width on the desktop? Use this stylesheet to override the CSS.
View devrant.css
@media (min-width: 880px) {
.interior-centered {
margin: 0;
width: auto;
.interior-content {
width: auto;
.body-col1 {
display: none;
pluma / stringifyJsonml.js
Created Nov 12, 2017
Converting JSONML to XML (without sanity checks)
View stringifyJsonml.js
function isObject(obj) {
if (!obj) return false;
if (typeof obj !== "object") return false;
if (Array.isArray(obj)) return false;
return true;
function* stringifyElement(element, indentLevel, depth = 0) {
const indent =
typeof indentLevel === "string"
pluma / jsonmlElement.js
Created Nov 12, 2017
Creating a DOM-like element tree from JSONML
View jsonmlElement.js
function isObject(obj) {
if (!obj) return false;
if (typeof obj !== "object") return false;
if (Array.isArray(obj)) return false;
return true;
class Element {
constructor(tagName, attributes, ...children) {
this.tagName = tagName;
pluma / hyper-stayalive.js
Created Sep 29, 2017
Prevent window from closing when last tab is closed (works great with autohide and visor)
View hyper-stayalive.js
'use strict';
const seen = new Set();
const $KNOWS_TO_HIDE = Symbol('knowsToHide');
exports.onWindow = window => {
if (window[$KNOWS_TO_HIDE]) return;
window[$KNOWS_TO_HIDE] = true;
window.rpc.on('hide', () => setTimeout(() => window.hide(), 0));
exports.middleware = store => next => action => {
switch (action.type) {
pluma / autohide.js
Created Sep 29, 2017
Automatically hide on startup by running `HYPER_AUTOHIDE=1 hyper`
View autohide.js
'use strict';
const $AUTO_HIDDEN = Symbol('autoHidden');
if (process.env.HYPER_AUTOHIDE) {
exports.onApp = app => {
if (app[$AUTO_HIDDEN]) return;
app[$AUTO_HIDDEN] = true;
const windows = app.getWindows();
for (const window of windows.values()) {
setTimeout(() => window.hide(), 500);
pluma / arrutils.js
Created Feb 19, 2017
ES6 non-mutating array manipulation helpers
View arrutils.js
export const replace = (arr, index, value) => [
...arr.slice(0, index),
...arr.slice(index + 1)
export const insert = (arr, index, value) => [
...arr.slice(0, index),
View xunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="/hello" timestamp="2016-11-23T15:32:04.685Z" tests="31" errors="0" failures="6" skip="1" time="66">
<testcase classname="global" name="is global" time="0"/>
<testcase classname="An error" name="is an error" time="0">
<failure type="Error" message="banana">
Error: banana
at Context.&lt;anonymous> (/home/pluma/projects/arango/_local/3.1.devel/arango-apps/_db/_system/hello/APP/test/queries.js:12:11)
at [as immediately] (./js/common/bootstrap/modules/process.js:26:5)
You can’t perform that action at this time.