Skip to content

Instantly share code, notes, and snippets.

View jamesdavidson's full-sized avatar

James Davidson jamesdavidson

View GitHub Profile
@jamesdavidson
jamesdavidson / proj.cljr
Last active November 8, 2024 06:48
Using PROJ from ClojureCLR on .NET 8 for fun and profit (at your own risk, no implied warranty etc)
;; Using proj from ClojureCLR on .NET 8 for fun and profit (at your own risk, no implied warranty etc)
;;
;; Inspired by https://ericsink.com/entries/native_library.html
;; Tested on Ubuntu 22.04 with libproj-dev 8.2.1
;
;<Project Sdk="Microsoft.NET.Sdk">
; <PropertyGroup>
; <OutputType>Exe</OutputType>
; <TargetFramework>net8.0</TargetFramework>
; <ImplicitUsings>enable</ImplicitUsings>
@jamesdavidson
jamesdavidson / get_from_s3.cljr
Created August 9, 2024 04:07
Playing around with making API calls to Amazon S3 from Clojure CLR using the AwsSignatureVersion4 library from Nuget
;; <PackageReference Include="AwsSignatureVersion4" Version="4.0.1" />
(ns get_from_s3
(:import [Amazon.Runtime EnvironmentVariablesAWSCredentials SessionAWSCredentials]
[System.Net.Http HttpClient GetAsyncExtensions HttpCompletionOption]
[System Uri])
;(:use clojure.pprint clojure.repl clojure.reflect)
(:require [clojure.clr.io :as io]))
;(assembly-load "AWSSDK.Core")
;(assembly-load "AwsSignatureVersion4")
@jamesdavidson
jamesdavidson / gzipper.clj
Last active May 29, 2024 02:47
gzipper.clj
;; clj -Sdeps '{:deps {org.clojure/data.csv {:mvn/version "1.1.0"} org.clojure/data.json {:mvn/version "2.5.0"}}}' --main gzipper
(ns gzipper
(:require [clojure.java.io :as io]
[clojure.walk :as walk]
[clojure.string :as string]
[clojure.data.json :as json]
[clojure.data.csv :as csv])
(:import [java.net InetSocketAddress HttpURLConnection]
[java.util.zip GZIPOutputStream]
@jamesdavidson
jamesdavidson / dummy.tf
Created March 27, 2024 10:21
Self signed cert and private key for development and local testing
terraform {
required_providers {
tls = {
version = "4.0.5"
}
local = {
version = "2.5.1"
}
}
}
@jamesdavidson
jamesdavidson / client-vtund.conf
Last active April 11, 2024 08:44
setup for vtun
options {
port 5000; # Connect to this port.
timeout 60; # General timeout
# Path to various programs
ppp /usr/sbin/pppd;
ifconfig /sbin/ifconfig;
route /sbin/route;
firewall /sbin/ipchains;
ip /sbin/ip;
@jamesdavidson
jamesdavidson / Program.cs
Created December 19, 2023 04:02
nREPL with clojure CLR on dotnet 7
using clojure.lang;
using System.Reflection;
// start up Clojure runtime including compiler
RT.Init();
// make .cljr file resources available from DLL
Assembly.Load("clojure.tools.nrepl");
Assembly.Load("clojure.tools.reader");
@jamesdavidson
jamesdavidson / Program.cs
Last active May 27, 2024 07:17
Alternative to getting started for Clojure CLR with a socket REPL and sending a SigV4 signed request using an extension method
// dotnet --version
// 7.0.100
// dotnet restore
// dotnet run
// rlwrap nc localhost 5555
using System;
using System.IO;
using System.Net;
using System.Net.Http;
@jamesdavidson
jamesdavidson / find-or-create.sql
Created July 17, 2023 17:28
find or create values
-- https://stackoverflow.com/a/70312948
WITH
extant AS (
SELECT id FROM access_code WHERE ("value") = ('asdf')
),
inserted AS (
INSERT INTO access_code ("value")
SELECT 'asdf'
WHERE NOT EXISTS (SELECT FROM extant)
# 12th July 2023
# trying out https://www.daemonology.net/blog/2021-08-12-EC2-boot-time-benchmarking.html
cloudshell-user@ip-10-2-80-7 infra]$ history
1 git clone https://github.com/cperciva/ec2-boot-bench
2 cd ~/ec2-boot-bench/
3 ls
4 cat BUILDING
5 ./configure
@jamesdavidson
jamesdavidson / user.clj
Created June 2, 2023 01:45
Clojure snippet for creating PDF where each page is from a PNG image file
;; org.clojure/clojure {:mvn/version "1.11.1"}
;; com.github.librepdf/openpdf {:mvn/version "1.3.30"}
(import 'com.lowagie.text.Document)
(import 'com.lowagie.text.Image)
(import 'com.lowagie.text.PageSize)
(import 'com.lowagie.text.pdf.PdfWriter)
(def doc (new Document))
(def os (io/output-stream "output.pdf"))