Skip to content

Instantly share code, notes, and snippets.

@martinklepsch
martinklepsch / cf-tail-worker-sourcemaps.md
Last active January 10, 2026 00:48
Cloudflare Tail Worker source-mapped stack traces investigation

Source-mapped stack traces in Tail Workers require unhandled exceptions

Summary

We're building error monitoring with a Tail Worker and want source-mapped stack traces. We found that only unhandled exceptions populate the exceptions array with source-mapped stacks - meaning you can't have both a custom error response AND source-mapped stacks in the Tail Worker.

What we want

  1. Custom error responses to clients (not Cloudflare's generic error page)
  2. Source-mapped stack traces in our Tail Worker for alerting
@martinklepsch
martinklepsch / fritzbox_reconnect.py
Created April 22, 2010 19:39
Simple script to reconnect your fritz.box
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Instruct an AVM FRITZ!Box via UPnP_ to reconnect.
This is usually realized with tools like Netcat_ or cURL_. However, when
developing in Python_ anyway, it is more convenient to integrate a native
implementation. This one requires Python_ 2.5 or higher.
UPnP_ (Universal Plug and Play) control messages are based on SOAP_, which is

I've been moving my blog to Astro and needed to add a slug property to each file. My files had a permalink that included the slug but I needed just the slug as a standalone property.

✅ Script did exactly what I needed ✨

The prompt

(With my babashka scripting context window attached)

Conjure Cheat Sheet

All prefixed by local leader, which is \ in my case.

:disconnect "cd"
:connect-port-file "cf"
:interrupt "ei"
:last-exception "ex"
:view-source "es"
@martinklepsch
martinklepsch / logging.cljc
Last active July 2, 2024 13:37
simple Clojurescript logging using Google Closure logging tools
;; This previously was CLJX but has now been updated to use cljc. Thanks @caskolkm
;; https://gist.github.com/caskolkm/39d823f5bac7051d3062
(ns app.logging
(:refer-clojure :exclude [time])
(:require #?(:clj [clojure.tools.logging :as log]
:cljs [goog.log :as glog]))
#?(:cljs (:import goog.debug.Console)))
#?(:cljs
;; Auto-scrolling ==============================================================
(defn scroll! [el start end time]
(.play (goog.fx.dom.Scroll. el (clj->js start) (clj->js end) time)))
(defn scrolled-to-end? [el tolerance]
;; at-end?: element.scrollHeight - element.scrollTop === element.clientHeight
(> tolerance (- (.-scrollHeight el) (.-scrollTop el) (.-clientHeight el))))
(defn autoscroll-list [{:keys [children class scroll?] :as opts}]
@martinklepsch
martinklepsch / README.md
Last active November 30, 2023 02:42
A small babashka script to convert HTML from stdin to hiccup and pretty print it.

A small babashka script to convert HTML from stdin to hiccup and pretty print it.

I use this inside NeoVim with this config line

command PasteAsHiccup r !pbpaste | html2hiccup

And then whenever I want to paste some HTML as Hiccup I'll do :PasteAsHiccup.

@martinklepsch
martinklepsch / client.clj
Last active November 26, 2023 20:36
A minimal Clojure client for Airtable.com's HTTP API.
(ns oxygen.client
"A minimal Clojure client for Airtable.com's HTTP API.
Supports retrieval of whole tables as well as individual records.
Dependencies: [org.clojure/data.json \"0.2.6\"] [clj-http \"2.0.0\"]"
(:require [clojure.data.json :as json]
[clojure.string :as string]
[clojure.set :as set]
[clj-http.client :as client]))
(def api-base "https://api.airtable.com/v0")
@martinklepsch
martinklepsch / README.md
Last active November 17, 2022 09:59
`deps.lua` is an all-in-one script containing your declarative list of dependencies and installing any missing ones.

deps.lua is an all-in-one script containing your declarative list of dependencies and installing any missing ones.

Kind of like Clojure's deps.edn except that the dependencies and code to download them are bundled in one package.

  • add link from file to gist so people can find back to here
  • add entries to .gitignore if available
  • ? if file ends in .fnl, download fennel.lua and compile to respective .lua file location

Usage in a fennel script

@martinklepsch
martinklepsch / karabiner.json
Created November 14, 2022 09:35
karabiner.json rule to "press" cmd, shift, control and option when pressing caps lock
{
"description": "Change caps_lock to command+control+option+shift.",
"manipulators": [
{
"from": {
"key_code": "caps_lock",
"modifiers": {
"optional": [
"any"
]