This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-06-28
Channels
- # announcements (5)
- # babashka (7)
- # beginners (46)
- # biff (28)
- # calva (7)
- # cider (3)
- # clerk (82)
- # clj-commons (9)
- # clj-kondo (7)
- # clojure (37)
- # clojure-dev (16)
- # clojure-europe (18)
- # clojure-norway (7)
- # clojurescript (8)
- # clojureverse-ops (3)
- # cursive (5)
- # datomic (4)
- # emacs (20)
- # exercism (2)
- # lsp (58)
- # off-topic (32)
- # polylith (11)
- # reitit (7)
- # tools-build (7)
- # xtdb (4)
I'm pondering the results of the https://www.clojuriststogether.org/news/call-for-new-proposals.-june-survey-results./ and thinking about what would be the highest-impact way to spend my open-source time. In the https://biffweb.com/docs/library/ I have a roadmap of various how-to guides and things I'd like to write. However I'm feeling like it'd be better to focus on clojure adoption in general, aiming specifically at people who would want to use clojure for web dev. There are two high-level projects that come to mind: • Create a "learn clojure" course for people who are brand new to the language (I'll assume they aren't brand new to programming though) For a while I've had the idea to make a "Biff from scratch" course that shows you how to do clojure web dev the traditional way, where you piece together different libraries one at a time. (And then surprise, you end up building something that has the same architecture as a biff app.) Basically I'd be doing that without assuming any previous clojure knowledge--so I'd be teaching the clojure language and web dev at the same time. I'd probably make videos for all the sections too. Ideally the biff website would be a one-stop shop. It would have the minimal amount of docs/resources needed to take you from zero clojure knowledge to being productive with clojure + web dev. and then after that you can always branch out to other resources to deepen your knowledge etc. • Put a bunch more work into https://github.com/jacobobryant/platypub#platypub so it's in a polished, easy-to-use state, and add contributor docs. Try to turn it into an active, community-driven project. I'm also probably going to open-source yakread. After platypub and yakread are both in a good state, I may create one more complementary app too (https://tfos.co/p/discussion-reading/; sort of a discord/slack/reddit alternative). Partly this is because I think it would be helpful to have some useful open-source apps as a way to introduce people to clojure + give them a project to work on; partly it's because I really want these apps to mature and succeed in their own right 🙂.
Anyway, feedback/insights welcome. I'm thinking of alternating between these two areas each week.
I feel like Biff has been a tremendous learning tool for me, so I definitely see a lot of potential in it as an entry way to Clojure.
For me, quite experienced hobbyist is many programming languages, there were no problems to learn (and fall in love with) Clojure itself - enough good books and other resources. But it’s quite difficult to start building something of a normal scale for web without a clear “handholding frameworks” like Rails, Django, Laravel in other languages. Therefore, I’d love you to concentrate on “Biff from scratch” taking for granted that your readers do know Clojure already. Another question on my mind now (after the initial acquaintance with Biff) is - how to get rid of XTDB and replace it with Postgresql/HugSQL in Biff :) Perhaps this kind of guide would find a place in your roadmap as well?
I always struggle when trying to start Clojure back-end project from scratch. Too many things to remember, and too many libraries to connect. It would be amazing to have "learn clojure" tutorial, possibly pointing out some alternatives for different decisions.
I think teaching clojure + biff is brilliant. I already consider biff to be the on ramp to clojure, this will make it official. At first I was not so into this idea. I thought learning the language itself was a solved problem. But after thinking about it I think it's a really good idea. It's a whole experience and way of looking at the language and community emphasizing a practical and no nonsense way to hit the ground running.
New developers want to accomplish something more than toy functions.
Some interesting perspectives 🙂 I'll have to mull this one over... @U05E4BRHBCG re: replacing XT with postgres--that'd be a good topic for a how-to guide; I'll add that to my list. It's come up a couple times in the past.
A possibility could be to do biff-from-scratch first and assume clojure knowledge, then possibly do a learn-clojure guide afterward... though in that case probably better to just let other people work on learn-clojure resources and link to those; I think the only reason it'd make sense for me specifically to work on learning-clojure resources would be if they're geared towards biff
Another thing I've thought about is writing a handful of blog posts that each go over a section of Biff and walk you through how it's working under the hood and other ways it could be done (including via different libraries). That might be a better format for teaching the ecosystem than biff-from-scratch-while-assuming-clojure-knowledge (i.e. the posts would be taking a top-down approach rather than a bottom-up approach, they'd just be drilling further down than you normally would go in the course of developing an app)

I'm sure biff from scratch would be a great resource. But if the goal is engaging newcomers I think it makes more sense to teach clojure by using Biff to build an application rather than building Biff. Building Biff would be a more advanced activity, more down in the trenches, less rewarding for someone who is trying to build something useful for users, more rewarding for an expert trying to build a general system.
that's what I had in mind. I.e. the idea would be to make an application, and the framework code you build around it would end up having the same structure as biff. maybe a "biff lite"
Why build a framework when biff already exists?
to learn how biff works under the hood. like learning to do long division without a calculator
the framework in this case wouldn't be a standalone framework that can be used to create new apps--it would just be the framework-y parts of the application code, I.e. all the non-application-specific bits that people end up writing when they make an app the traditional Clojure way, by piecing libraries together
It's a good idea
As someone who is used to putting clojure backends together from scratch, somehow Biff has all the pieces in place that I would want anyway, that’s what I found myself surprised by initially. The only thing I really had to do was mess around with CORS and the auth plugin because I did quickly realize I’m not a big fan of HTMX. I’ve been using Biff in combo with ClojureDart. Nothing but good things to say about it.
For me (currently learning clojure, have programmed already in several languages) the learning clojure part already havo good books. But then how to compose that to a bigger system and how to get comfortable in a new language is tha harder part. So i would like a biff from scratch as i could learn how to put a system together. Also biff blog post would be great ressource to learn more about the ecosystem.
Keeping such guides up to date (at least have the current release verion of libraries) is also important. As a newcomer it's annoying to get to a guide which is 3 years out of date.
Another +1 for Biff from scratch. I’ve found Luminus/Kit docs useful when trying to piece together my own Clojure system but they only go so far. Something that embraces Clojure’s library-based philosophy would be a huge help for newcomers.
Biff from scratch would be interesting, because the only way to actually arrive at something like Biff is to have a strong grounding in the ideology that makes Clojure development unique. Of course, there’s more than one way to architect systems with Clojure, but when you talk to other Clojure devs you find that a lot of us do converge around similar ideas more often than not. So to learn how to make Biff from scratch would be a master class in how to think about Clojure systems. I think that the two approaches (Biff from scratch and Building from scratch with Biff) are complementary and likely target different audiences, or perhaps the same individual at different points in their experience.
Well it seems like there's enough interest that it's probably worth doing 🙂. I'll put some thought into the structure/come up with an outline and report back.
+1 for platypub and mature cms/publishing apps (+ open integrations). How many people reach for something like wordpress or airtable when they need to host or publish some data quickly? (even clojure devs advocate this). What do those platforms provide? A ui for end users to edit content. (But at what cost?) Instead of getting boxed in to those platforms, they could have a pristine open clj stack to serve their immediate need, but invite them to go custom and deeper as needed. Picturing some kind accessible balance between composability and not feeling like the rawest markdown + edn + cli SSG
Yes that's exactly right I think. Look at all the million static blog generators written by individual developers with nothing in common. There is some kind of balance to be struck between user friendly feature availability and elegant composability appealing to developers
My vote would be for a real world app using Biff. In the Clojure world, we don't have good documentation for newbies like me. The README files on github are written by people who assume that everyone understand a few cryptic lines and expect the newbies to read the code which is not going to happen. There is a huge cognitive load when someone is coming to Clojure from a non functional and non java background. There are a lot things to learn and having just a few examples in the README is a big deterrent in my opinion. We need a framework tutorial which take a newbie through building a typical CRUD app with a nice front-end step-by-step. I think this is sorely missing in the Clojure world and the guides that do exists, are generally outdated Ofcourse this is very time consuming and I can understand why a libraray or framework creator may not be inclined to take on this kind of work. I think Tony who created Fulcro has done an excellent job in that respect. He's written a whole book and a series of tutorial to explain the concepts. But Fulcro is not for everyone as it's quite a complicated Framework for a newbie to grasp.
I am also interested in a CMS in the clojure world which is sorely lacking - I use Umbraco and it's an excellent CMS. Something like that would be a really good project to showcase Clojure's abilities. Right now we are using Umbraco Heartcore which is a headless CMS and we use NextJS for front-end - i would want to do something using Clojure on the back-end and Clojurescript for the front-end but I can't.
@U7YNGKDHA - you are doing an excellent job - you are really active in the channel and respond quickly to any queries and you are open to helping people out instead of just putting something out there. Really appreciate all the work you are doing even if I've not been able to use Biff yet.
Thank you! > We need a framework tutorial which take a newbie through building a typical CRUD app with a nice front-end step-by-step. Biff does have https://biffweb.com/docs/tutorial/build-a-chat-app/ which ticks these boxes. The app it has you build is "sort-of real-world"--it's more complex than tic tac toe, though still just an app for learning, not an app that's actually useful in its own right. Platypub is an actual real-world app--no tutorial for writing it from scratch, but it is an actually useful app (and more complex than the tutorial app).