Skip to content

Instantly share code, notes, and snippets.

Infinigraph, and beyond!

Sean Grove sgrove

Infinigraph, and beyond!
View GitHub Profile
sgrove / curl->clj.clj
Last active Aug 18, 2021
Convert Chrome's `copy-as-curl` to clj-http calls
View curl->clj.clj
(defn curl->clj*
"Given a (single) curl string from Chrome's copy-as-curl, convert it either
into a clj-http call, a task-based http entry, or a shortened
task-based entry"
(curl->clj* curl-str {}))
([curl-str conv-opts]
(let [clean-opts (:clean conv-opts)
merge-opts (:merge conv-opts)
headers (->

Reading the (already impressive) compiled output in in the tutorial by Michele Riva on Calling ReasonML from TypeScript, I thought the output could be made nearly identical (bar comments and some weird nest paren wrapping) to what an experienced dev might write by hand

If we:

  1. have Flat-variants-(and polymorphic-variants)-as-strings (see
  2. Omit String(x) when x is already a string (already merged): rescript-lang/rescript-compiler#4293
  3. Propogate the variable names from destructuring a tuple to the output (see
  4. Don't do nested parens inside of {j|$x foo $y bar $z baz|j} output

Then the output (minus the /* tuple */ comments) would be exactly what you'd write by hand!

type editor;
module Editor: {
let make:
~width: string=?,
~height: string=?,
~value: string=?,
~defaultValue: string=?,
View gist:6ebea98f998c6a25fa9fd476244d7c49
sgrove /
Last active Feb 11, 2019
Bad interaction between Async wrapper around ocurl and httpaf
[@@ocaml.doc " Async support for Curl, see "]
module M = Curl.Multi
type interrupt = unit Async.Ivar.t
type multi =
mt: ;
all_events: (Unix.file_descr, interrupt list) Hashtbl.t ;
wakeners: (Curl.t, Curl.curlCode Async.Ivar.t) Hashtbl.t }

Keybase proof

I hereby claim:

  • I am sgrove on github.
  • I am sgrove ( on keybase.
  • I have a public key whose fingerprint is 35A0 F67E AD5E 19C0 75B2 7F72 C0B8 0362 7E5F CE94

To claim this, I am signing this object:

sgrove / google_maps.gql
Created Jul 14, 2018
Google Maps (Reverse+) Geolocation and Elevation API
View google_maps.gql
google(auths: { googleMapsKey: "..." }) {
maps {
intersection: geolocation(address: "Eddy & Franklin St, San Francisco, CA") {
point: reverseGeolocation(
point: { lat: 37.7478646802915, lng: -122.4578673697085 }
) {
sgrove / Example_queries.graphql
Created Jul 16, 2018
Example Descuri (URLHound?) Queries
View Example_queries.graphql
descuri(url: "") {
twitter {
youTube {
other {
sgrove / onegraph.gql
Last active Jul 12, 2018
Example multi-service query with OneGraph and GraphQL
View onegraph.gql
## Retrieve a YouTube video by its id
youTubeVideo(id: "YX40hbAHx3s") {
snippet {
# Pull out the title
# Jump to the channel the video was uploaded to
uploadChannel {
snippet {
# Get the title of the channel
View twitter_example_timeline.json
"created_at": "Thu Apr 06 15:28:43 +0000 2017",
"id": 850007368138018817,
"id_str": "850007368138018817",
"text": "RT @TwitterDev: 1/ Today we’re sharing our vision for the future of the Twitter API platform!n",
"truncated": false,
"entities": {
"hashtags": [],
"symbols": [],