Summary Education & Cultural Participation Advocates
ClojureStream is a landing page for a subscription-based online learning platform specializing in Clojure programming education. The content demonstrates strong positive alignment with UDHR Article 26 (right to education) through structured, expert-reviewed, accessible courses designed to eliminate learning barriers, and with Article 27 (cultural and scientific participation) through community-driven knowledge sharing and contributor recognition. The platform advocates freedom of association (Article 20) and community participation (Article 22) through workshops and discussion forums, with mild positive engagement on privacy rights (Article 12). The primary limitation is the subscription model, which may restrict access for low-income learners.
Hey HN — I'm Jacek. I've been teaching Clojure through video courses (Reagent, Re-frame, Reitit, Datomic, Pedestal) for a few years, hosted on Podia.
I finally got around to building my own platform. It's Clojure on the backend, self-hosted, and gave me the chance to drop prices significantly since there's no platform cut anymore.
The migration from Podia is complete — all user accounts, subscriptions, and purchases carried over. Existing subscribers had their prices automatically lowered.
Happy to talk about the stack, the migration process, or the courses themselves.
Could you tell more about the stack? And also, you clearly know your way around it, so would be curious to hear your thoughts about the language itself - what do you like about it?
I looked into Clojure a little bit, and my understanding is that it is a dynamically typed language and objects/values are formed on the fly via putting data into the a map (reminds me JS). And as someone having experience in both statically and dynamically typed languages - I definitely choose the first. My question is, how do you deal with this? Isn't dynamic typing getting on your way? How do you define contracts? How do you version schemas? Do you even have them? How do you know what to expect from the database? Or how don't you forget about mandatory fields in your objects?
Dynamic typing is scary. I had a production issue in NodeJS codebase manifesting only when two pods of the same service were fighting for updating the same resource in the cache. One pod gets lucky, updates the cache, and returns an array. Meanwhile, the same function, on the other pod, returns a map, because it failed to update the cache. And because both the function and calling side had no "contract" on what to return and what to expect, the runtime was happily converting my array into a map, and that was causing a huge problem downstream. Imagine how enjoyable was debugging this... Point is, this situation seems impossible in a statically typed language. I wonder how this issue could have been avoided in Clojure.
Thank you.
Edit: One-time code goes into spam folder on fastmail.com.
Platform explicitly advocates for right to education through multiple signals: 'Access structured learning paths,' 'hands-on' project-based courses with clear progression ('Step by steps - never get lost'), expert quality assurance, and commitment to preventing barriers ('never feel lost'). Educational philosophy emphasizes understanding and comprehension.
FW Ratio: 50%
Observable Facts
Core messaging: 'Access structured learning paths, engage in live workshops, explore insightful podcast conversations.'
Course design emphasizes accessibility: 'Step by steps - never get lost' and 'The focus is on thematic units that are introduced gradually.'
Quality assurance stated: 'Everything what is included has been reviewed, approved, or provided by Clojure expert.'
Learning design emphasizes comprehension: 'Understand - how things connect' and 'grasp how the things work together.'
Inferences
The structured, gradual learning design is explicitly aimed at making technical education accessible to diverse learners.
Platform actively advocates participation in technical and scientific community: 'learn about libraries, people, and companies that create value in Clojure community.' Podcast covers 'libraries, companies, and people...Architectures, Tools, Libraries' positioning users as participants in knowledge culture.
FW Ratio: 50%
Observable Facts
Podcast described as covering 'libraries, companies, and people that create value in Clojure community.'
Topics list includes 'Clojure, ClojureScript, Datalog, Architectures, Tools, Libraries, Tips and Tricks.'
Platform describes enabling learners to 'grasp how the things work together' and understand interconnections among technical concepts.
Inferences
The platform explicitly facilitates participation in scientific and technical culture of the Clojure community.
Emphasis on understanding how components interconnect supports deeper engagement with knowledge systems.
Community-centered framing positions learners as participants in ongoing scientific/cultural knowledge creation.
Platform advocates for cultural and scientific participation in Clojure community. Content credits contributors extensively (15+ named individuals) and emphasizes 'Everything...has been reviewed, approved, or provided by Clojure expert,' protecting intellectual contributions. Framing as 'for the community, by the community' advocates community-driven science/culture.
FW Ratio: 50%
Observable Facts
Lists 15 named community contributors with GitHub links: 'Alex Redington, Chris Nuernberger, Daniel Compton, [and 12 others]'
States 'Everything what is included has been reviewed, approved, or provided by Clojure expert.'
Podcast described as featuring 'libraries, people, and companies that create value in Clojure community.'
Courses teach how 'to combine libraries into a cohesive units' and understand scientific interconnections.
Inferences
Named contributor credit protects intellectual/cultural contributions and enables recognition of scientific work.
Expert review and approval mechanism signals protection of scientific quality and integrity.
Platform explicitly positions itself as amplifying community voices in knowledge creation.
Teaching interconnections between technical components supports participation in evolving scientific culture.
Platform explicitly advocates connection and assembly: 'Connect with others who are also eager to learn. Learn from others observations, and questions.' Frames participation as peaceful gathering around shared learning interest.
FW Ratio: 60%
Observable Facts
Workshop description states 'Connect with others who are also eager to learn.'
Platform emphasizes 'for the community, by the community' orienting toward group participation.
Lists named community contributors enabling identification and association with specific individuals.
Inferences
The explicit invitation to connect with others directly facilitates right of peaceful assembly.
Community-driven governance model supports freedom of association within learning context.
Platform advocates inclusive community approach ('for the community, by the community') without apparent exclusion criteria. Diverse contributor list signals non-discriminatory access to community.
FW Ratio: 50%
Observable Facts
Platform self-describes as 'for the community, by the community.'
Lists 15+ diverse contributors by name and GitHub profile without stated restrictions.
Inferences
Community-oriented framing and open contributor listing suggest commitment to non-discriminatory inclusion within the learning platform.
Lack of stated access restrictions on who can join workshops or access community implies equal opportunity positioning.
Workshop format includes 'Get your questions answered' and podcast features 'conversations' about topics, enabling users to express ideas and engage in dialogue.
FW Ratio: 50%
Observable Facts
Workshop section states participants can 'Get your questions answered' during live sessions.
Podcast described as featuring conversations about libraries, companies, and people in Clojure community.
Inferences
The Q&A format and discussion opportunities support users' ability to express opinions and ask questions.
Podcast format modeling conversational exchange suggests platform values diverse viewpoints and expression.
Platform advocates community responsibility through quality standards: 'Everything what is included has been reviewed, approved, or provided by Clojure expert.' Frames content curation as community duty.
FW Ratio: 50%
Observable Facts
Emphasis on expert vetting of all content: 'Everything what is included has been reviewed, approved, or provided by Clojure expert.'
Inferences
Quality control mechanism reflects commitment to responsible community contribution and knowledge integrity.
Page states 'Everything what is included has been reviewed, approved, or provided by Clojure expert' and lists 15 named expert contributors with GitHub links.
loaded language
Uses terms like 'idiomatic Clojure,' 'cohesive units,' 'never get lost,' and 'grasp how things work together'—technical terminology framed positively.
bandwagon
Phrase 'for the community, by the community' appears twice, inviting readers to join a movement.
build 1ad9551+j7zs · deployed 2026-03-02 09:09 UTC · evaluated 2026-03-02 11:31:12 UTC
Support HN HRCB
Each evaluation uses real API credits. HN HRCB runs on donations — no ads, no paywalls.
If you find it useful, please consider helping keep it running.