Los Angeles, CA

Cam Saul

Elite
@camsaul

Principal/Lead Engineer & Chief Architect @ Metabase. Clojure & other Lisps. In past lives wrote Objective-C, C++, C, Java, and Python professionally.

methodical. Functional and flexible multimethods for Clojure. Nondestructive multimethod construction, CLOS-style aux methods and method combinations, partial-default dispatch, easy next-method invocation, helpful debugging tools, and more.

321

nesasm. NESasm -- NES 6502 assembler, version 3.1 :video_game:

296

toucan2. Successor library to Toucan with a modern and more-extensible API, more consistent behavior, and support for different backends including non-JDBC databases and non-HoneySQL queries. Currently in active beta.

119

lein-instant-cheatsheet. Leiningen plugin that generates a searchable cheatsheet for your Clojure project and dependencies :yum:

109

NAMenu. Dead simple SpringBoard-like grid menu for iOS with landscape support

46

humane-are. Drop-in replacement for clojure.test/are with better error output and better arg validation

32

emacs-unicode-troll-stopper. Stop Unicode trolls from messing with your code.

24

django-rest-params. Function decorator for Django REST Framework for specifying and constraining API parameters

18

whitespace-linter. Fast multithreaded and customizable linter that checks files for trailing whitespace, tabs, files that don't end in newlines, files that end in blank lines, Unicode characters that look maddeningly similar to ASCII ones, and invisible Unicode characters.

18

lein-docstring-checker. Leiningen Plugin that lints your Clojure project and checks that every public var is documented

10

crow-security. Crow Middleware for Configuring HTTP Security Headers

10

lein-check-namespace-decls. Clojure linter that checks that namespace declarations are cleaned the way `clj-refactor` would clean them. Leiningen/deps.edn plugin.

9

sqlhoney. Clojure SQL Parser and Formatter/Pretty Printer. Parse a SQL String to Honey SQL [work in progress]

9

.emacs.d. My new Emacs config. Keeps getting bigger

5

moneysql. Experiemental Reimplementation of HoneySQL

5

hello_world_x86_64_asm_os_x. Hello, World in x86_64 assembly (NASM) on OS X

5

external-fn. Small Clojure lib to define functions whose implementations will be provided elsewhere

4

advent-of-code-2024. Advent of Code 2024 in Prolog

3

java-finch. JVM Version Manager written in Babashka

3

clojure-library-template. Template for creating a Clojure library project, including tests, linters, CircleCI & badges

3

core-logic-utils. A bunch of core.logic util fns I've written over the years

3

pretty. A standard protocol for making custom types in Clojure pretty print in the REPL and elsewhere.

3

awesome-clojure. A curated list of awesome Clojure libraries and resources. Inspired by awesome-... stuff

2

clj-kondo-hook-map-bug-repro. This repro is to demonstrate how to reproduce https://github.com/clj-kondo/clj-kondo/issues/1773. Do not star it, only a crazy person would do that.

2

old-emacs-dir. My *old* .emacs.d. 3000+ lines of Emacs Lisp :scream:

1

common-lisp-book-notes. Example code as I follow along while reading various CL books

1

antq. Point out your outdated dependencies.

1

dash.el. A modern list library for Emacs

1

rest-client. Badass Mac (Cocoa) REST Client written in Objective-C++

1

99-lisp-problems-. Solutions to the 99 Lisp Problems

1

mozilla-ignite-demo. LuckyBird's Public Transit Tools for the SF Muni, for the Mozilla Ignite Challenge

1

BirdKit. iOS Classes and Categories Used Throughout LuckyBird's Apps

1

form-encode. Clojure library to correctly handle nested maps/arrays when encoding query string/form params

1

minimal-emacs-clojure-repl-setup. Emacs init.d containing the bare minimum to use the cider REPL and have it be useful

1

dynapath. A Clojure abstraction for modifiable/readable class loaders.

1
35
Apply