You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<p>An open effort to structure learning resources with meaningful connections.</p>
317
-
<p>Clojure Civitas is a contributor-friendly platform that makes it easy for you to share Clojure ideas and explorations, without the overhead of setting up a new project, blog, or repo. Whether you’re sketching out a quick experiment or writing a deeper post, Civitas gives you a shared scratch space where publishing is simple. Just open a namespace, write, and submit. No infrastructure required.</p>
316
+
<p>Clojure Civitas makes it easy for you to publish Clojure ideas and explorations without the overhead of setting up a new project, blog, or repo. Whether you’re sketching out a quick experiment or writing a deeper post, just create a namespace, write, commit and submit. This is your shared scratch space.</p>
<p>An open effort to structure learning resources with meaningful connections.</p>
344
344
<p>“Civitas” refers to a community of citizens, encompassing the rights, duties, and privileges associated with belonging. It’s a term that signifies citizenship, not just a physical city, but also the political and social fabric of the community.</p>
<p>Clojure and markdown are a natural fit for interactive, literate programming. But there is incidental complexity in setup and publishing. Creating a new project, configuring a blog, choosing themes and styling, organizing files, adding analytics, and thinking about SEO all add overhead. This friction discourages experimentation and makes publishing harder than it needs to be.</p>
<p>Notebooks combine Clojure and markdown for expressive, interactive literate programming. Compared to blogs, gists, or repos, they better support combining narrative, code, and results in a single document. Civitas removes the friction of publishing by enabling you to submit notebooks or markdown without setting up a new project or hosting workflow. It provides a shared, well-organized platform for short experiments, tutorials, notes, and blog posts.</p>
<p>Markdown comments in Clojure namespaces is a perfect fit for interactive literate programming. Creators should only have to care about their code, not setting up projects or hosting workflows. Let’s make a shared, organized platform for short experiments, tutorials, notes, and blog posts.</p>
<h3class="anchored" data-anchor-id="build-a-database-of-knowledge">Build a Database of Knowledge</h3>
358
-
<p>Civitas aggregates structured metadata about the content it hosts and links it to other Clojure resources. Instead of scattered, unstructured articles, Civitas supports a connected web of ideas, showing how concepts relate, what builds on what, and where to go next. Its<ahref="https://clojurecivitas.github.io/civitas/explorer.html">hex-grid interface</a> presents these relationships visually. Each notebook can declare prerequisites, alternatives, and follow-ups. This helps learners discover next steps, helps educators design coherent learning paths, and enables the community to improve content over time. The goal is to make the Clojure knowledge ecosystem easier to explore and navigate.</p>
358
+
<p>Civitas aggregates structured metadata about the content it hosts and links it to other Clojure resources. We can build a connected web of ideas, showing how concepts relate, what builds on what, and where to go next. A<ahref="https://clojurecivitas.github.io/civitas/explorer.html">hex-grid interface</a> presents these relationships visually. Each notebook can declare prerequisites, alternatives, and follow-ups. This helps learners discover next steps, helps educators design coherent learning paths, and enables the community to improve content over time. The goal is to make the Clojure knowledge ecosystem easier to explore and navigate.</p>
<p>Clojure Civitas does not aim to centralize all Clojure knowledge. Instead, it offers a flexible publishing pattern that individuals and communities can adopt. Civitas can also be used as a library to help you publish your own content garden, independent of the main site.</p>
362
+
<p>Clojure Civitas does not aim to centralize Clojure knowledge. Rather it hopes to amplify existing resources, connect with them, and add a place in between for raw ideas and creative experiments.</p>
<h3class="anchored" data-anchor-id="moderation-and-curation">Moderation and Curation</h3>
370
-
<p>All content is submitted via Pull Requests, which are reviewed to prevent abuse. A small team of reviewers ensures quick turnaround. Community representatives are available to assist and guide contributors.</p>
<h3class="anchored" data-anchor-id="minimal-moderation-and-curation">Minimal Moderation and Curation</h3>
370
+
<p>Content is submitted via Pull Requests, which are reviewed to prevent abuse. A small team of reviewers ensures quick turnaround. Community representatives are available to assist and guide contributors.</p>
<p>Metadata is currently provided by authors. Future improvements may include automated extraction and smarter linking to enrich the knowledge base.</p>
374
+
<p>Metadata is provided by authors. Future improvements may include automated extraction and smarter linking to enrich the knowledge base.</p>
<spanid="cb1-2"><ahref="#cb1-2" aria-hidden="true" tabindex="-1"></a> (<spanclass="va">#'clojure.core/print-object</span> x w))</span></code><buttontitle="Copy to Clipboard" class="code-copy-button"><iclass="bi"></i></button></pre></div>
<p>The syntax is <code>#object[CLASS-NAME HASH toString())]</code> and as you can see, the toString of an Object is <code>CLASS-NAME@HASH</code>. For most objects this becomes quite a long string.</p>
413
413
<divclass="sourceClojure">
414
414
<divclass="sourceCode" id="cb5"><preclass="sourceCode clojure code-with-copy"><codeclass="sourceCode clojure"><spanid="cb5-1"><ahref="#cb5-1" aria-hidden="true" tabindex="-1"></a>(async/chan)</span></code><buttontitle="Copy to Clipboard" class="code-copy-button"><iclass="bi"></i></button></pre></div>
<p>It’s quite easy to miss the fact that it is a function as we are looking for a tiny little <code>fn</code> in a sea of text. If, like me, you are fond of the <ahref="../../code_interview/beating/with_stupid_stuff/z_combinator_gambit.html">odd lambda calculus excursion</a>, things get even more hectic.</p>
<p>Yikes! what an eyesore. This is not an academic issue specific to lambda calculus. Any function created from inside a function is helpfully identifiable through the <code>fn$fn</code> nesting. We create these quite regularly, and they are often printed in stack traces. I’m sure you have seen them when you map an inline function across a seq, and there is a bug in the anonymous function.</p>
0 commit comments