Biff updates for August

For the uninitiated: Biff is a Clojure web framework aimed at solo developers.


Coding meetups

  • 5 August: I made a bare-bones RSS reader
  • 19 August: we had a pair session with Tom Brooke, mainly focused on some details of Platypub theme development
  • 1 September: I did a demo of implementing password authentication (since Biff currently only comes with email link authentication out of the box)

This month we have meetups scheduled on the 15th and the 29th. Follow the links to RSVP and get the Zoom link.

I renamed the meetup from "Biff Pair Programming" to "Biff Coding" since probably most of these will be solo coding sessions done by yours truly ๐Ÿ™‚. But sign up here if you'd like to participate in a pair programming session.

Code review

If you'd like some code review for your own project, make an issue on this repo.

Projects made with Biff


  • @jeffp42ker submitted several bug fixes and UI enhancements.
  • I completely overhauled the data model. This allows custom themes to define not only how your data should be rendered, but also what kind of data there should be in the first place. See the release, and also my post Flexible themes in Platypub for a long-winded explanation.
  • I've also changed the structure of the default theme. Previously it was a couple of standalone Babashka scripts. Now it has a deps.edn file and a src folder, so other themes can reuse the code without having to copy and paste. This is the first time I've used Babashka tasks.
  • I also made the default theme look more spiffy (example), and I added another theme called "Minimalist" (example).

Yakread: this is my current "main thing" as of several weeks ago. Yakread imports your content from various places (like RSS, newsletters, ...) and merges it all into one algorithmically-curated feed. I've finished the essential features and am using it happily myself. Next step is to work on the onboarding experience and marketing. I've written several explanatory posts.

If you're building something with Biff and would like a small amount of exposure, let me know and I'll mention it in next month's newsletter.

Future plans


  • Replace Biff's default task shell script with Babashka tasks and move the task definitions into a library. This does mean I'll need to add Babashka to Biff's list of requirements, but worth it IMO.
  • Some enhancements to com.biffweb/submit-tx.
  • Experiment with moving Biff's authentication code into a plugin. The current email link code gets copied-and-pasted into new projects. I will probably add password authentication soon. Since Biff is organized around the idea of feature maps, it might work nicely to have library code that returns a feature map. Something like (def features (com.biffweb.plugins.authentication/features {}), which would define a set of HTTP routes used for authentication. Then maybe add in a com.biffweb.plugins.authentication/form function that renders a signup/sign-in form, with some options for styling and selecting which authentication methods to enable.
  • In a somewhat similar vein, I might try to turn more template code into libary code by moving this into a "com.biffweb/disaggregate" helper function, which would take a list of your feature maps and return a map with keys for handler, on-tx, etc. (This and the previous bullet point were inspired by this Clojureverse discussion about inversion of control in web frameworks).


  • I really need to update the docs for Platypub. The data model and theme structure updates I made this month have made Platypub more flexible, but the cost is that it's getting more complex and there are more rough edges.
  • Building on that, I'd like to explore GitHub's projects thing and use it to lay out a better roadmap for Platypub—both to give clarity on what I'm planning to build, and to make it easier for others to contribute. Sanding down some of the aforementioned rough edges would be a particularly nice thing to highlight.
  • And I'm still planning to work on the documentation plans I described last month, e.g. restructuring the Biff website and adding a series of how-to-build-a-discussion-forum-with-biff tutorials, for starters.

These will not all be complete in September, to be clear ๐Ÿ™‚.


I think I'll try to do more with GitHub Discussions too, i.e. use it as a companion to the #biff Slack channel. At a minimum I'll make a post there each month for these newsletter issues. Feel free to leave a comment.

[Slightly off-topic] Ideas for stuff to build

This section ended up being kind of long, so I broke it out into a separate post.


  • Come chat with us in #biff on Clojurians Slack if you haven't joined already. Also feel free to create a discussion thread about anything.
  • Big thanks to JUXT, Tom Brooke, Jeff Parker, John Shaffer, Wuuei, one anonymous donor, and previously Clojurists Together for sponsoring Biff. If you'd like to help support Biff, please consider becoming a sponsor too.
  • I'm available for short-term consulting engagements; email me if you have a project you'd like to discuss.

Published by Jacob O'Bryant on 5 Sep 2022

Sign up for Biff: The Newsletter
Announcements, blog posts, et cetera et cetera.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.