Skip to content

Instantly share code, notes, and snippets.

@bhelx
bhelx / improvements.md
Created December 5, 2023 19:43
0.5 -> 1.0 changes in extism
  • Port core of the runtime to wasm: Extism Kernel extism/extism#384
    • Extism is now a portable layer and we are no longer coupled to wasmtime!
  • New universal JS-SDK (browser, node, deno, & bun) https://github.com/extism/js-sdk
    • Universal library, no longer a separate node and a browser library
    • Uses native web platform Wasm support and threading (V8 in chrome, Deno, and Node; JSC in bun and Safari; and Spidermonkey in Firefox) instead of wasmtime
  • New Go-SDK https://github.com/extism/go-sdk
    • Switched out wasmtime with wazero thanks to the Extism kernel
    • Now no longer requires cgo and has a more idiomatic go API
  • Extism-CLI re-written in Go using new go-sdk https://github.com/extism/cli
  • Easier to install than python and installs as a single binary with no separate runtime object or python install
@bhelx
bhelx / test.wat
Last active January 27, 2024 04:15
Just enough js code to parse and run a simple Wasm file. Very naive and just using this to learn the spec. don't use in a real system. `wat2wasm test.wat && node wam.js ./test.wasm`
(module
(func
(export "add41")
(param $n i32)
(result i32)
i32.const 41
local.get $n
i32.add
)
@bhelx
bhelx / plugin_server.ex
Created September 17, 2022 15:21
GenServer wrapper for Extism Plugin
defmodule ExtismElixirHost.PluginServer do
use GenServer
@impl true
def init() do
{:ok, nil}
end
@impl true
def handle_call({:new, manifest, wasi}, _from, plugin) do
@bhelx
bhelx / annotate.py
Last active February 13, 2021 21:32
Refactoring the [neighborhood annotation script](https://github.com/codefornola/nola-neighborhood-annotation) to utilize [the nolabase](https://github.com/codefornola/nolabase/) instead of using all the data and doing the computation locally. This demonstrates using the nolabase as a dependency to a community run application or tool. Run it by p…
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
# Refactoring the [neighborhood annotation script](https://github.com/codefornola/nola-neighborhood-annotation) to
# utilize [the nolabase](https://github.com/codefornola/nolabase/) instead of using all the data
# and doing the computation locally.
# This demonstrates using the nolabase as a dependency to a community run application or tool.
# Run it by passing a connection string and an input and output csv file:
# ```
# # get 2021 calls for service data as a test
@bhelx
bhelx / sql_canary.rb
Last active April 14, 2020 23:42
Pass a block of code to `while_enabled` to sniff out any SQL queries it might be making.
class SqlCanary
def self.enable!
Thread.current[:sql_canary] = true
end
def self.disable!
Thread.current[:sql_canary] = false
end
def self.enabled?
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@bhelx
bhelx / recurly_bot.ex
Created November 30, 2016 01:50
Elixir Plug Cowboy Example
defmodule RecurlyBot do
use Application
# See http://elixir-lang.org/docs/stable/elixir/Application.html
# for more information on OTP Applications
def start(_type, _args) do
import Supervisor.Spec, warn: false
# Define workers and child supervisors to be supervised
children = [
@bhelx
bhelx / fetch.rb
Last active May 9, 2017 21:57
Recursively fetch Craigslist apartments using their map's json api
REGION = 'neworleans'
BASE_URL = "https://#{REGION}.craigslist.org"
parse_listings = lambda do |url|
results = JSON.parse Net::HTTP.get(URI(url))
results.first.each do |item|
if item.key? 'GeoCluster'
parse_listings.call("#{BASE_URL}#{item['url']}")
@bhelx
bhelx / process.js
Last active March 1, 2016 23:08
Fetch and resize geojson images concurrently using async.js
"use strict";
let im = require('imagemagick');
let async = require('async');
let fs = require('fs');
let request = require('request');
let path = require('path');
let os = require('os');
let fetchAndProcess = (task, done) => {
@bhelx
bhelx / test.php
Last active September 16, 2017 12:29
TLS Low Level Testing. You should expect to see it print TLS version 1.2.
<?php
// This example is for testing php with libcurl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.howsmyssl.com/a/check");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);