Skip to content

Instantly share code, notes, and snippets.


Jochen Bedersdorfer beders

View GitHub Profile
beders / mini-promise.cljc
Last active January 26, 2022 22:18
Super minimal macro to simplify dealing with promise/async/await code in ClojureScript
View mini-promise.cljc
(defn create-function-call [param expr]
"Create an sexp for calling expr with a first argument provided by a promise.
If expr is a list (already in form suitable for a function call), insert the first argument at second position,
otherwise turn expr into a function call expression, unless the function is an fn, which is simply returned.
println -> (fn [param] (println param))
(* 2) -> (fn [param] (* param 2))
beders /
Created October 16, 2017 23:47
Glorious hack to use Java 9 HttpClient with servers enforcing SNI
package us.monoid.resty.hack;
import java.util.List;
/** Glorious hack to always create an SSL Engine with a hostname and port.
* engineGetServerSessionContext and engineGetClientSessionContext can't be implemented without violating class/module loading constraints,
* but for some reason, they are not being called.
* */
beders /
Created May 10, 2017 00:51
Alternative Pubsub API design
// TODO add imports
public class QuickstartSample {
public static void main(String... args) throws Exception {
Topic t = TopicAdmin.getDefault().createTopic("my-new-topic");
System.out.printf("Topic %s:%s created.\n", topic.getProject(), topic.getName());
beders / jps.js
Created June 21, 2015 03:04
List of currently running Java processes, color coded using Nashorn
View jps.js
// List running Java Processes
// ansicolors
var a = { reset : "\u001B[0m", black: "\u001B[30m", red: "\u001B[31m", green: "\u001B[32m",
yellow: "\u001B[33m", blue: "\u001B[34m", purple: "\u001B[35m", cyan: "\u001B[36m",
white: "\u001B[37m"
var jps = `jps -vl`.split('\n').slice(0,-1);
var ownPID ='@')[0];
beders /
Last active December 8, 2015 13:35
Examples for optional lambda parameters and polymorphism with default methods
package example;
import java.util.ArrayList;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
* Created by beders on 7/7/15.
beders / nashorn-bash
Last active December 8, 2015 13:34
A bash script that is also a nashorn script.
View nashorn-bash
#!/usr/bin/env bash
JJS=$(type -p $JDK_HOME/bin/jjs || type -p jjs)
if [ -z $JJS ]; then
echo "I can't find jjs. Please install JDK 8 or set JDK_HOME."; exit 1
JS=$(mktemp $(basename "$0").XXXXXX)
tail -n+12 "$0" > $JS
$JJS -scripting $JS -- "$@"
rm $JS
exit 0;
beders /
Created January 17, 2012 06:42
POST multipart form data (application/multipart-formdata)
// POST multipart form data (application/multipart-formdata)
Resty r = new Resty();
String firstResult = r.xml("",
form(data("appid","YahooDemo"),data("query", "Resty+java"), data("results", "10")))
beders /
Created January 17, 2012 06:38
Getting the Google Developer calendar
// Getting the Google Developer calendar
// getting a link from JSON to an XML description of an entry, parsing the text out with XPath
Resty r = new Resty();
String title =
.xml(path("feed.entry[0].id.$t")).get("entry/title/text()", String.class);
beders /
Last active September 29, 2015 15:48
Hello World! Complete example
import us.monoid.web.Resty;
public class HelloResty {
// Hello World!
public static void main(String... args) throws IOException {
Resty r = new Resty();
// Get the content of the URL as text and print it
String hello = r.text("").toString();
View gist:467a7fccfccb1744607e
var json = JSON.parse(document.getElementsByTagName('pre')[0].innerText);
var result = JSON.parse(json.result);
document.getElementsByTagName('BODY')[0].appendChild(document.createTextNode("Result to convert: " + JSON.stringify(result, null, 2)));
// mock data
result = {