41554 blogs · [ { "id": "01a08765-6b1c-7262-b4e0-7097c878d440", "title": "Managing a Project's Tool Dependencies with Nix (and direnv)", "url": "https://cuddly-octo-palm-tree.com/posts/2025-08-10-tool-dependencies/", "published_at": "2025-08-09T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097c907d90f", "title": "Notes on Optimizing Clojure Code: Arrays", "url": "https://cuddly-octo-palm-tree.com/posts/2022-03-06-opt-clj-8/", "published_at": "2022-03-05T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097c90dbfc9", "title": "Notes on Optimizing Clojure Code: Type Hints", "url": "https://cuddly-octo-palm-tree.com/posts/2022-02-27-opt-clj-7/", "published_at": "2022-02-26T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097ca04c522", "title": "Notes on Optimizing Clojure Code: Reflection", "url": "https://cuddly-octo-palm-tree.com/posts/2022-02-20-opt-clj-6/", "published_at": "2022-02-19T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097ca774316", "title": "Notes on Optimizing Clojure Code: Data Structures", "url": "https://cuddly-octo-palm-tree.com/posts/2022-02-13-opt-clj-5/", "published_at": "2022-02-12T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cb41c7ab", "title": "Notes on Optimizing Clojure Code: Numerics", "url": "https://cuddly-octo-palm-tree.com/posts/2022-02-06-opt-clj-4/", "published_at": "2022-02-05T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cb5d9da1", "title": "Notes on Optimizing Clojure Code: Example", "url": "https://cuddly-octo-palm-tree.com/posts/2022-01-30-opt-clj-3/", "published_at": "2022-01-29T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cb79973c", "title": "Notes on Optimizing Clojure Code: Measurements", "url": "https://cuddly-octo-palm-tree.com/posts/2022-01-23-opt-clj-2/", "published_at": "2022-01-22T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cb7fea7d", "title": "Notes on Optimizing Clojure Code: Overview", "url": "https://cuddly-octo-palm-tree.com/posts/2022-01-16-opt-clj-1/", "published_at": "2022-01-15T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cc6ac6a1", "title": "AoC 24, part 2: A proper solution", "url": "https://cuddly-octo-palm-tree.com/posts/2022-01-09-aoc-24/", "published_at": "2022-01-08T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cd1b5567", "title": "AoC 24, part 1: Did I cheat?", "url": "https://cuddly-octo-palm-tree.com/posts/2022-01-02-aoc-24/", "published_at": "2022-01-01T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cd2f6981", "title": "Graph search: Dijkstra, A*", "url": "https://cuddly-octo-palm-tree.com/posts/2021-12-26-graph-search/", "published_at": "2021-12-25T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cd4f0434", "title": "Tools You Should Know About: nix-shell", "url": "https://cuddly-octo-palm-tree.com/posts/2021-12-19-tyska-nix-shell/", "published_at": "2021-12-18T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cd54e93b", "title": "Tools You Should Know About: direnv", "url": "https://cuddly-octo-palm-tree.com/posts/2021-12-12-tyska-direnv/", "published_at": "2021-12-11T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cdc07e0a", "title": "\"The Genuine Sieve of Eratosthenes\" in Clojure", "url": "https://cuddly-octo-palm-tree.com/posts/2021-12-05-sieve/", "published_at": "2021-12-04T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097ce885c46", "title": "Primes in Clojure part 2: Interop", "url": "https://cuddly-octo-palm-tree.com/posts/2021-11-28-clj-primes-2/", "published_at": "2021-11-27T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cef90be6", "title": "Circular Programming in Clojure", "url": "https://cuddly-octo-palm-tree.com/posts/2021-11-21-circular-clojure/", "published_at": "2021-11-20T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cfaabe06", "title": "The Clojure Promise", "url": "https://cuddly-octo-palm-tree.com/posts/2021-11-14-clojure-promise/", "published_at": "2021-11-13T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097cfb02201", "title": "Computing prime numbers with Clojure", "url": "https://cuddly-octo-palm-tree.com/posts/2021-11-07-clj-primes/", "published_at": "2021-11-06T23:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d098df1c", "title": "Bash functions are better than I thought", "url": "https://cuddly-octo-palm-tree.com/posts/2021-10-31-better-bash-functions/", "published_at": "2021-10-30T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d1905179", "title": "Forwarding emails with SES and Terraform", "url": "https://cuddly-octo-palm-tree.com/posts/2021-10-24-aws-email-forwarding-tf/", "published_at": "2021-10-23T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d1b437d5", "title": "A short overview of DNS", "url": "https://cuddly-octo-palm-tree.com/posts/2021-10-17-dns/", "published_at": "2021-10-16T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d23d94a7", "title": "Tools You Should Know About: Terraform", "url": "https://cuddly-octo-palm-tree.com/posts/2021-10-10-tyska-terraform/", "published_at": "2021-10-09T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d31026c3", "title": "Monads for Clojure programmers", "url": "https://cuddly-octo-palm-tree.com/posts/2021-10-03-monads-clojure/", "published_at": "2021-10-02T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d3e89082", "title": "Tools You Should Know About: jq", "url": "https://cuddly-octo-palm-tree.com/posts/2021-09-26-tyska-jq/", "published_at": "2021-09-25T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d49ce60e", "title": "The elements of git", "url": "https://cuddly-octo-palm-tree.com/posts/2021-09-19-git-elements/", "published_at": "2021-09-18T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d52d6cf4", "title": "Tools You Should Know About: tmux", "url": "https://cuddly-octo-palm-tree.com/posts/2021-09-12-tyska-tmux/", "published_at": "2021-09-11T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d6136559", "title": "Monads, part six: But, really, what is a monad?", "url": "https://cuddly-octo-palm-tree.com/posts/2021-09-05-monads-6/", "published_at": "2021-09-04T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d6ea77af", "title": "Data-first API design", "url": "https://cuddly-octo-palm-tree.com/posts/2021-08-29-data-api/", "published_at": "2021-08-28T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d795d188", "title": "Cheap interpreter, part 10: fastest one yet, then a hundred times faster", "url": "https://cuddly-octo-palm-tree.com/posts/2021-08-22-cwafi-10/", "published_at": "2021-08-21T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d7a2322c", "title": "Cheap interpreter, part 9: even faster register machines", "url": "https://cuddly-octo-palm-tree.com/posts/2021-08-15-cwafi-9-clojure/", "published_at": "2021-08-14T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d8a145e2", "title": "Cheap interpreter, part 8: faster register machines", "url": "https://cuddly-octo-palm-tree.com/posts/2021-08-08-cwafi-8-fast-registers/", "published_at": "2021-08-07T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d9843c3e", "title": "Cheap interpreter, part 7: register machines", "url": "https://cuddly-octo-palm-tree.com/posts/2021-08-01-cwafi-7-register-machine/", "published_at": "2021-07-31T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097d9deb732", "title": "Cheap interpreter, part 6: faster stack machines", "url": "https://cuddly-octo-palm-tree.com/posts/2021-07-25-cwafi-6-faster-stack-machine/", "published_at": "2021-07-24T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097da0ee9c2", "title": "Cheap interpreter, part 5: mea culpa", "url": "https://cuddly-octo-palm-tree.com/posts/2021-07-18-cwafi-5-mea-culpa/", "published_at": "2021-07-17T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097dac774d9", "title": "Cheap interpreter, part 4: stack machines", "url": "https://cuddly-octo-palm-tree.com/posts/2021-07-11-cwafi-4/", "published_at": "2021-07-10T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097db38f734", "title": "Cheap interpreter, part 3: host-language functions", "url": "https://cuddly-octo-palm-tree.com/posts/2021-07-04-cwafi-3/", "published_at": "2021-07-03T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097db4ae2b4", "title": "Cheap interpreter, part 2: tree-walking", "url": "https://cuddly-octo-palm-tree.com/posts/2021-06-27-cwafi-2/", "published_at": "2021-06-26T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097dbebb098", "title": "Cheap interpreter, part 1: overview", "url": "https://cuddly-octo-palm-tree.com/posts/2021-06-19-cwafi-1/", "published_at": "2021-06-18T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097dc5990a5", "title": "Church-Turing equivalence", "url": "https://cuddly-octo-palm-tree.com/posts/2021-06-13-church-turing/", "published_at": "2021-06-12T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097dd597d2d", "title": "What is functional programming?", "url": "https://cuddly-octo-palm-tree.com/posts/2021-06-06-functional-church/", "published_at": "2021-06-05T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097dd79505f", "title": "What is imperative programming?", "url": "https://cuddly-octo-palm-tree.com/posts/2021-05-30-imperative-turing/", "published_at": "2021-05-29T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097dd910e8f", "title": "Asking questions as an interviewee", "url": "https://cuddly-octo-palm-tree.com/posts/2021-05-23-interviewee/", "published_at": "2021-05-22T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097de2927d1", "title": "Monads, part five: What if I'm not writing Haskell?", "url": "https://cuddly-octo-palm-tree.com/posts/2021-05-16-monads-5/", "published_at": "2021-05-15T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097df28154a", "title": "Monads, part four: examples", "url": "https://cuddly-octo-palm-tree.com/posts/2021-05-09-monads-4/", "published_at": "2021-05-08T22:00:00+00:00" }, { "id": "01a08765-6b1c-7262-b4e0-7097dfbb0875", "title": "Monads, part three: monads made easy", "url": "https://cuddly-octo-palm-tree.com/posts/2021-05-02-monads-3/", "published_at": "2021-05-01T22:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be85f5207e", "title": "Monads, part two: Okay, I guess, but what is it for?", "url": "https://cuddly-octo-palm-tree.com/posts/2021-04-25-monads-2/", "published_at": "2021-04-24T22:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be8640ed55", "title": "Monads, part one: What's a monad?", "url": "https://cuddly-octo-palm-tree.com/posts/2021-04-18-monads-1/", "published_at": "2021-04-17T22:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be86b98ce4", "title": "Monads, part zero: Flavours of abstractions", "url": "https://cuddly-octo-palm-tree.com/posts/2021-04-11-monads-0/", "published_at": "2021-04-10T22:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be87600877", "title": "How to break a computer", "url": "https://cuddly-octo-palm-tree.com/posts/2021-04-04-aprils-fools/", "published_at": "2021-04-03T22:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be87da3aef", "title": "Laziness: Clojure vs Haskell", "url": "https://cuddly-octo-palm-tree.com/posts/2021-03-28-lazy-io/", "published_at": "2021-03-27T23:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be8807dd96", "title": "Genetic algorithms", "url": "https://cuddly-octo-palm-tree.com/posts/2021-03-21-genetic-search/", "published_at": "2021-03-20T23:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be882d4b5c", "title": "Removing a directory", "url": "https://cuddly-octo-palm-tree.com/posts/2021-03-14-removing-a-directory/", "published_at": "2021-03-13T23:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be88b9b658", "title": "Review: Why FP Matters (Hughes)", "url": "https://cuddly-octo-palm-tree.com/posts/2021-03-07-review-whyfp/", "published_at": "2021-03-06T23:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be88c9a26b", "title": "Merge sort in Bash", "url": "https://cuddly-octo-palm-tree.com/posts/2021-02-28-bash-merge-sort/", "published_at": "2021-02-27T23:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be891824e7", "title": "Bash redirections", "url": "https://cuddly-octo-palm-tree.com/posts/2021-02-21-bash-redirections/", "published_at": "2021-02-20T23:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be89c1ba8f", "title": "Runtime optimization with eval", "url": "https://cuddly-octo-palm-tree.com/posts/2021-02-14-eval-opti/", "published_at": "2021-02-13T23:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be89e7b66d", "title": "Safer Bash: avoid nesting", "url": "https://cuddly-octo-palm-tree.com/posts/2021-02-07-avoid-nesting/", "published_at": "2021-02-06T23:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be8a2b1728", "title": "Safer Bash: fail on pipes", "url": "https://cuddly-octo-palm-tree.com/posts/2021-01-31-bash-set-pipefail/", "published_at": "2021-01-30T23:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be8a7f9c76", "title": "Safer Bash: no unset", "url": "https://cuddly-octo-palm-tree.com/posts/2021-01-24-bash-set-dash-u/", "published_at": "2021-01-23T23:00:00+00:00" }, { "id": "01a08765-6b1d-7275-8061-40be8b64f7cf", "title": "Safer Bash: die on error", "url": "https://cuddly-octo-palm-tree.com/posts/2021-01-17-bash-set-dash-e/", "published_at": "2021-01-16T23:00:00+00:00" } ] posts Claim your blog
Back to cuddly-octo-palm-tree.com
Blog · corpus.blog/blogs/cuddly-octo-palm-tree.com/posts

cuddly-octo-palm-tree.com

cuddly-octo-palm-tree.com

2025

2022

2021