RSS.Social

anders murphy

follow: @[email protected]

Posts

Clojure: SQLite C API with project Panama and Coffi

Why you should consider using brotli compression with SSE

Clojure: Realtime collaborative web apps without ClojureScript

Clojure: Synchronous server sent events with virtual threads and channels

How to max throughput when pulling data from a third party service

Clojure: virtual thread and dynamic var performance

Clojure: structured concurrency and scoped values

Clojure: managing throughput with virtual threads

Clojure: CI with Github Actions and Postgres

Clojure: pruning HTML with clojure.walk

Emacs: streaming radio with emms

Clojure: the REPL makes contributing to open source easy

Clojure: clj-kondo datalog linting

Clojure: virtual threads with ring and jetty

Clojure: virtual threads with ring and http-kit

Fennel: making PICO-8 games

Clojure: SQLite application defined SQL functions with JDBC

SQLite: building from source on macOS

Clojure: sending emails with postal and Gmail SMTP

Clojure: pretty print strings

Clojure: extend honeysql to support postgres 'alter column' and 'add constraint'

Clojure: removing namespace from keywords in response middleware

Clojure: making missing environment variables fail at compile time

Heroku: buildpack for Clojure tools

Clojure: compiling java source with tools.build

Clojure: check if instant happened today at timezone

Emacs: the joy of reducing workflow friction with elisp

Emacs: building from source on macOS

Clojure: code highlights for this website

Clojure: website link checker

Clojure: map-occurrence

Clojure: ensuring multimethods are required

Clojure: destructive macros

Clojure: crawling Hacker News with re-seq

Clojure: cond-merge revisited

Clojure: adding dissoc-in to our cond-merge macro

Clojure: cond->, deep-merge, remove-nils and the shape of data

Clojure: string similarity

Clojure: adding compile time errors with macros

Clojure: previous, current and next

Clojure: jdbc using any and all as alternatives to in

Emacs: setting up Apheleia to use Prettier and Zprint

Homebrew: write your own brew formula

Clojure: code formatting pre-commit hook with zprint

Clojure: java interop with bean

Clojure: code as data

Clojure: persistent rate limiting

Clojure: permutations

Ruby: functional programming

Clojure: flattening key paths

Clojure: manipulating HTML and XML with zippers

Clojure: sorting tuples

Clojure: generating HTML and XML

Clojure: using java.time with clojure.java.jdbc

Clojure: connection pooling with hikari-cp

Clojure: emoji in strings

Clojure: a debug macro for threading macros using tap>

Clojure: intro to tap> and accessing private vars

Clojure: sorting a sequence based on another sequence

Clojure: personalising text

Clojure: case conversion and boundaries

Clojure: contains? and some

Clojure: sorting

Lisp-1 vs Lisp-2

Clojure: merging maps by key (join)

Clojure: string interpolation

Clojure: sending emails with SendGrid

Clojure: validating phone numbers

Clojure: juxt and separate

Clojure: map-values and map-keys

Desert island code: compose and pipe

Desert island code: curry

Desert island code: reduce map and filter

Managing obfuscation with annotations

Using Proguard instead of multidex

Signing your app

Introduction to Kotlin on Android

Setting up Retrolambda

Enabling multidex on Android

Binding Android views with Butter Knife

Advantages of an Android free zone