Skip to content

Instantly share code, notes, and snippets.

View reborg's full-sized avatar

reborg reborg

View GitHub Profile
@reborg
reborg / rich-already-answered-that.md
Last active May 8, 2024 14:20
A curated collection of answers that Rich gave throughout the history of Clojure

Rich Already Answered That!

A list of commonly asked questions, design decisions, reasons why Clojure is the way it is as they were answered directly by Rich (even when from many years ago, those answers are pretty much valid today!). Feel free to point friends and colleagues here next time they ask (again). Answers are pasted verbatim (I've made small adjustments for readibility, but never changed a sentence) from mailing lists, articles, chats.

How to use:

  • The link in the table of content jumps at the copy of the answer on this page.
  • The link on the answer itself points back at the original post.

Table of Content

@reborg
reborg / state-of-clojure-2022-free-text.md
Last active July 21, 2022 08:56
State of Clojure 2022 - Free text answers

Sate of Clojure - 2022 - Free Text Answers

A vaguely curated rendering of the free text answer in the State of Clojure 2022 survey. Answers are ordered by length and their title contains the original timestamp and a summary sentence which I added to make it easier to find them later. The rest of the text is the original with some formatting fixes.

What can we as a community do to increase Clojure adoption?

State of Clojure Survey 2018 - Open comment question

This is a selection of the most articulated critique found in the open comments section Q25 at the bottom of the survey. Recurring themes are:

  1. Elitism, ivory tower, "not smart enough to get it" attitude of frequent speaker or early adopters.
  2. Poor basic documentation, error messages, beginner friendly resources.
  3. Fear of contribution (with reasons like a. community-built tools open to attack and replacement by core team b. hostile contribution environment c. closed development process)
  • The community has to grow to create more opportunities. Many organizations don't want to even consider using it because they fear not being able to find Clojure developers. Unless you have a mentor or are extremely motivated, Clojure scares away most imperative developers. My suggestions is to team up with a university and get a Clojure course on Coursera or a similar platform. This is the only way I got in

Keybase proof

I hereby claim:

  • I am reborg on github.
  • I am reborg (https://keybase.io/reborg) on keybase.
  • I have a public key ASArE1P4PUQs47HEjlhRDdWjFMasnK_2oMQrhSjLzqsOvQo

To claim this, I am signing this object:

@reborg
reborg / ptransducers.clj
Last active May 5, 2019 13:34
Parallel stateful transducers with fold
; The following is an attempt to answer the question: how to use stateful transducers with fork-join r/fold and what you
; should expect. Feedback appreciated. Feel free to discuss on Clojurians slack @reborg.
; Stateful transducers (for example drop, partition-by, dedupe etc.) cannot be used in parallel with fold.
; They produce inconsistent results, for example:
(require '[clojure.core.reducers :as r])
(distinct
(for [i (range 500)]
@reborg
reborg / clojure-survey-2019-highlights.md
Last active February 4, 2019 23:42
A selection of the most insightful (my opinion) comments to the 2019 Clojure survey

1/8/2019 11:30 AM Clojure was my language of choice for quite a long time, but all the recent developments in the community[1] and lack of clear publicly available vision of the language's future alienates me greatly and makes me feel as an unwanted member of the community. Because of this I'm not considering Clojure anymore for any new development and don't really want to help growing the community by releasing new libraries/supporting existing ones, mentoring new Clojure engineers, speaking at meetups, or just simply recommending Clojure to people I know :( [1] Drift to being dogmatic and hostlie to any alternative thoughts community (or better say cult?), which started long time ago, reached unbearable level last year and I'm not interested in participating in any community even resembling a totalitarian one, even if the language itself is perfect (which Clojure is not). Disclaimer: my feelings are obviously mine alone and I don't claim it's the universal truth and "Clojure is dead", it's just my perso

@reborg
reborg / conference-radar.md
Last active January 28, 2019 17:56
Conference Radar
@reborg
reborg / most-used-fns.clj
Last active January 28, 2019 11:02
Clojure functions usage frequencies
;; The list of (almost) all Clojure public functions and macros ordered by usage. Source: Github code search for Clojure repositories.
(["ns" 394490]
["defn" 293918]
["require" 279210]
["let" 237654]
["def" 172983]
["refer" 163654]
["map" 159781]
["fn" 154482]
@reborg
reborg / astar.clj
Last active August 17, 2018 00:59
Clojure implementation of the A* path finding algorithm
;; This is the Wikipedia entry example encoded graph.
(def graph {:orig [{:a 1.5 :d 2} 0]
:a [{:orig 1.5 :b 2} 4]
:b [{:a 2 :c 3} 2]
:c [{:b 3 :dest 4} 4]
:dest [{:c 4 :e 2} 0]
:e [{:dest 2 :d 3} 2]
:d [{:orig 2 :e 3} 4.5]})
(defn a* [graph orig dest]
@reborg
reborg / deps.edn
Last active August 1, 2018 08:15
core.async master/worker pattern with throttling timeout
;; Install Clojure deps and try with:
;; clojure -Sdeps
;; '{:deps {user {:git/url "https://gist.github.com/reborg/ba05335edb09d50e1bd9f0fc5d6593f1"
;; :sha "435181444970c1fa2091283285830c63076fda4b"}}}' -e '(process [1 2 3])'
{:paths ["."]
:deps {org.clojure/core.async {:mvn/version "0.4.474"}}}