|
1 | | -^{:clay {:title "Growing explanations together" :quarto {:author :com.github/teodorlu :draft true :type :post :date "2025-10-26"}}} |
| 1 | +^{:kindly/hide-code true |
| 2 | + :clay {:title "Growing explanations together" :quarto {:author :com.github/teodorlu :draft true :type :post :date "2025-11-01"}}} |
2 | 3 | (ns civitas.why.growing-explanations-together |
3 | | - (:require [babashka.fs :as fs] |
| 4 | + (:require [clojure.edn] |
4 | 5 | [scicloj.kindly.v4.kind :as kind])) |
5 | 6 |
|
6 | | -;; # Growing explanations together |
7 | | -;; |
8 | 7 | ;; _reflections from a personal learning journey_ |
9 | 8 |
|
10 | 9 |
|
11 | 10 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
12 | 11 | ;; ## You should make a little home for yourself on the web! |
13 | 12 |
|
14 | 13 | ;; “Civitas is stupid, everyone should just create their own static site!” |
15 | | -;; I read something like this one time. |
| 14 | +;; I read this one time. |
16 | 15 | ;; And I think it's wrong! |
17 | | -;; I say it's wrong with conviction because I've previously believed it's right. |
| 16 | +;; I say it's wrong with conviction because I used to belive it was right. |
18 | 17 | ;; |
19 | | -;; But first, let's discover the truth in that statement. |
| 18 | +;; But first, what's the truth in that statement? |
20 | 19 | ;; |
21 | 20 | ;; Our mother's milk as Clojurians is simplicity. |
22 | | -;; Do create simple systems. |
23 | | -;; Don't complect. |
24 | | -;; Don't pull in lots of other people's depencies. |
25 | | -;; This is how you learn. |
26 | | -;; This is how you avoid ending up in a frontend hell with 53 MB of javascript required to show anything. |
27 | | -;; This is how you end up with a simple system! |
| 21 | +;; Do create simple systems! |
| 22 | +;; Don't complect! |
| 23 | +;; Don't pull lots of dependencies! |
| 24 | +;; By building with simpler pieces, you learn more. |
| 25 | +;; You avoid frontend hell where the browser must load 53 MB of compiled Javascript to say "Welcome!" |
| 26 | +;; This is how you build a simple system. |
28 | 27 | ;; |
29 | 28 | ;; The web is a wonderful place, and I encourage you strongly to make a part of it your own! |
30 | 29 | ;; I find it *completely amazing that I can type up some random shit about [the kind of things I like to learn], make a URL for that idea, and give it to a friend. |
31 | 30 | ;; How wonderful is that! |
32 | 31 | ;; And how *quick* is that! |
33 | | -;; Before the World Wide Web, Tim Berners Lee had jump through way many more hoops to achieve that. |
| 32 | +;; Before the World Wide Web, Tim Berners Lee had to print a piece of paper and give it to his colleague. |
| 33 | +;; Delivering more knowledge required more paper. |
34 | 34 | ;; |
35 | 35 | ;; [the kind of things I like to learn]: https://play.teod.eu/computing-learning-designing-researching/ |
36 | 36 | ;; |
37 | | -;; Additionally, a simple web site is just a folder of files. |
38 | | -;; No program-running necessary! |
| 37 | +;; A simple web site is just a folder of files. |
| 38 | +;; You don't have to run any programs to make that! |
39 | 39 | ;; Just write an HTML file and publish. |
40 | | -;; In the event that you want a better interface for typing, you are in complete control in order to solve that. |
41 | | -;; For me personally, [Babashka] has been a super-tool for doing that. |
42 | | -;; I can write the HTML generation program in the programming language I prefer (Clojure), and regenerate my web site quickly without having warm JVM at hand. |
| 40 | +;; If you want to avoid writing plain HTML, you are in control, you can write a program to make the HTML. |
| 41 | +;; For me personally, [Babashka] my tool of choice for that. |
| 42 | +;; I can write the HTML generation program in the programming language I prefer (Clojure), and regenerate my web site quickly without a running JVM. |
43 | 43 | ;; Oh, the joy! |
44 | 44 | ;; The experience with Babashka-powered knowledge on the web got me so excited I had to present [Build Your Own Little Memex with Babashka] on the first Babashka conference. |
45 | | -;; Oh, the joy! |
46 | | -;; Absolutely recommended, you should *totally* do that yourself |
| 45 | +;; 🤗 |
| 46 | +;; Absolutely recommended, you should *totally* do that yourself. |
47 | 47 | ;; |
48 | 48 | ;; [Babashka]: https://babashka.org/ |
49 | 49 | ;; [Build Your Own Little Memex with Babashka]: https://play.teod.eu/build-your-own-little-memex-with-babasha/ |
|
52 | 52 | ;; |
53 | 53 | ;; After having written, ... let me check, ... |
54 | 54 |
|
55 | | -(comment |
56 | | - (count (fs/glob "../../teodorlu/play.teod.eu" "*/play.edn")) |
57 | | - ;; => 479 |
58 | | - ;; Explanations get better with a Clojure REPL at hand, am I right??? |
59 | | - ;; |
60 | | - ;; (this code is evaluated as I'm writing it because other people |
61 | | - ;; shouldn't have to depend on my personal mess.) |
62 | | - ) |
| 55 | +(let [index (clojure.edn/read-string (slurp "https://play.teod.eu/index/big.edn"))] |
| 56 | + (kind/hiccup [:p "After having written " (count index) " documents, what have I gained?"])) |
63 | 57 |
|
64 | | -;; After having written 479 documents, what have I gained? |
65 | | -;; |
66 | 58 | ;; - I've explored what happens when I let myself have ideas |
67 | 59 | ;; - I've learned to build my own knowledge system |
68 | 60 | ;; - … and I've learned that this is *my* thing. |
69 | | -;; Due to the amount of personalization on my site, it works super well for me. |
| 61 | +;; My site is heavily personalized, and works great for me. |
70 | 62 | ;; For others? |
71 | 63 | ;; I woudn't recommend using it. |
72 | 64 | ;; Consider stealing a piece or two or fishing for some inspiration, but *please do make your own thing*. |
73 | 65 | ;; |
74 | | -;; What about the knowledge-building? |
75 | | -;; For me, it's superb. |
76 | | -;; I've learned to learn. |
| 66 | +;; Has it helped me build knowledge? |
| 67 | +;; For me, it's superb: I've learned to learn. |
77 | 68 | ;; Write an explanation for myself, then I understand it. |
78 | 69 | ;; The two explanations I'm most happy with are [Easy, explicit parallellism with pipeline-blocking] (collaboration with [Ruben Svealdson]) |
79 | 70 | ;; and [Rainbow tables: what they are, and why we salt passwords before hashing, explained with Clojure] (which I decided to move from my site to Clerk.Garden). |
80 | 71 | ;; |
81 | 72 | ;; [Easy, explicit parallellism with pipeline-blocking]: https://play.teod.eu/clojure-easy-parallellism-with-pipeline-blocking/ |
82 | 73 | ;; [Ruben Svealdson]: https://github.com/rubensseva |
83 | 74 | ;; [Rainbow tables: what they are, and why we salt passwords before hashing, explained with Clojure]: https://github.clerk.garden/teodorlu/lab/commit/1cfe71b8bf1b34ecbcf2fd6d1119985b49eab74c/src/rainbow_tables_2/ |
84 | | -;; |
85 | 75 |
|
86 | 76 |
|
87 | 77 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
88 | 78 | ;; ## Simple, great for learning—but ultimately isolated. |
89 | 79 | ;; |
90 | | -;; My personal web site is great for myself, but not comprehensible for others. |
| 80 | +;; My personal web site is great for myself, but not not great for others. |
| 81 | +;; An old-time Lisper [once wrote][Curse of Lisp] the following: |
91 | 82 | ;; |
92 | 83 | ;; > Lisp allows you to just chuck things off so easily, and it is easy to take |
93 | 84 | ;; > this for granted. I saw this 10 years ago when looking for a GUI to my |
|
98 | 89 | ;; > is also the product of not needing or wanting anybody else's help to do |
99 | 90 | ;; > something. |
100 | 91 | ;; |
101 | | -;; That's me. |
| 92 | +;; That's me! |
102 | 93 | ;; I made my own tiny world, lived in it, and it was awesome. |
103 | 94 | ;; But I couldn't invite anybody else in. |
104 | 95 |
|
105 | 96 |
|
106 | 97 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
107 | 98 | ;; ## Solving for cohesion and curation |
108 | 99 | ;; |
109 | | -;; You exist in context. |
| 100 | +;; You exist in a context. |
110 | 101 | ;; People might be interested in what you have to say, and they're also going to be interested in what others have to say. |
111 | | -;; If you're Alan Kay or Bret Victor, you may be able to create a microworld and invite people in, but most people aren't Alan Kay or Bret Victor. |
| 102 | +;; If you're Alan Kay or Bret Victor, you may be able to create a microworld and invite people in, but most people aren't Alan Kay or Bret Victor! |
112 | 103 | ;; That means people are going to be experiencing your creations in a context of other people's creations. |
113 | 104 | ;; |
114 | 105 | ;; That means my tiny, little static web site is never going to be someone else's world. |
115 | | -;; Sure, a curious reader may look around prompted by interest, but the reader will finish that trail of curiosity and do something else. |
| 106 | +;; Sure, a curious reader may look around prompted by interest, but the reader will finish that trail of curiosity and finally, do something else. |
116 | 107 | ;; |
117 | 108 | ;; To reach more with the explanations we create, we want to ensure cohesion with other people's explanations, and curate the very good explanations. |
118 | 109 | ;; |
|
126 | 117 | ;; ## Explanation playlists is the key. |
127 | 118 | ;; |
128 | 119 | ;; Curation has not yet been visibly tackled (as I see it), but the foundation has been laid. |
129 | | -;; In my Memex presentation, I argued that we need [knowledge playlists][knowledge playlist]. |
| 120 | +;; In my talk _Build Your Own Little Memex with Babashka_, |
| 121 | +;; , I argued that we need [knowledge playlists][knowledge playlist]. |
130 | 122 | ;; Today, I prefer the term _explanation playlist_. |
131 | 123 | ;; I define an explanation playlist as |
132 | 124 | ;; |
|
150 | 142 | ;; ## Consider contributing! |
151 | 143 | ;; |
152 | 144 | ;; After being very pleasantly surprised by the Noj-powered tooling that drives Clojure Civitas, I'm excited to lean into Civitas. |
153 | | -;; My personal web site continues to be a place of eploratory play, but now I have a goal for Clojure content: |
| 145 | +;; My personal web site continues to be a place of exploratory play, but now I have a goal for Clojure content: |
154 | 146 | ;; Put it on Civitas. |
155 | 147 | ;; On Civitas it can outlive me, and help grow a commons of knowledge, instead of yet another isolated island. |
0 commit comments