Biff updates for July

In an attempt to be more organized and to avoid posting too often, I've decided to send this newsletter once per month (on the first Monday of each month) and batch up any Biff-related announcements etc. here. You can subscribe to get the next monthly update by email. If you're unfamiliar with Biff, see the landing page.

Meetups. We've started doing recorded pair programming sessions twice per month. These are meant to be pretty laid back; a relaxing way to learn some Clojure web dev with Biff together. We've had two so far:

  • Jeff Parker closed three issues in Platypub related to the UI for sending newsletters (recording).
  • Jeremy Taylor fixed some bugs in Platypub in which users who hadn't added various API keys yet would see an Internal Server Error (recording).

We had 5-10 people at each of these, which is more than I was expecting! I just created a meetup group for the future sessions. You can RSVP to the next one, which will be on August 5th at 16:30 UTC (this Friday). The following meetup will be on the 18th. You can also sign up to drive.

Platypub improvements. There have been a handful of merged PRs in July in addition to the issues we closed in the meetups:

Thanks to Jeff Parker for submitting all of these. See the list of good first issues if you'd like to start contributing.

Asynchronous code review. This is another new experiment. I've created a GitHub repo where anyone can ask for feedback on their code. From the README:

If you're working on a Biff project and need help or would otherwise like some feedback on your code, create an issue. Include a link to the relevant files and/or commits in your project.

I (Jacob O'Bryant) will try to respond to all the feedback requests, and anyone else in the Biff community is also encouraged to respond if you have some time (especially if this becomes popular!). I mostly work on Biff on Fridays, so that's when I'll be most available for code review; but if I can answer a question quickly then I may do it throughout the week as well.

I don't know if anyone will use it, but at least now you know it's there!

Private mentoring. A couple people have asked about this, so I thought this would be worth mentioning: if you'd like some one-on-one help with learning Biff/Clojure web dev, I can do private mentoring over Zoom for $75/hour, with the first hour free. Email me if you'd like to set something up. That being said, I would encourage anyone interested to also/instead participate in the free "support" channels (meetups, asynchronous code review, and the #biff channel on Clojurians Slack).

Future plans

I've thought a lot about how I should use my "Biff time" (i.e. Fridays) going forward. I've decided I'd like to split it more-or-less evenly between three areas:

Community building/support. Organizing the meetups, doing async code review, answering any questions that come up on the #biff channel, writing this newsletter, responding to PRs and issues on Platypub. Since the Biff community is still quite nascent, this doesn't take much time yetthe meetups are the main thing currently.

Developing Platypub. Since Platypub is meant to give people an opportunity to contribute to an open-source Biff project, I have purposely avoided working on a lot of the issues myself. However, some issues are more complex and involve a bunch of details that are mostly in my head. I'd like to keep those issues out of the way so that they don't become blockers for any other contributors.

I'd also like to take care of the issues on the critical path so that I can provide a hosted instance of Platypub. Then anyone can try it out without needing to run the code themselves first. In its final form, I'd like Platypub to become a gateway to Clojure and possibly programming in general: you could think of it as "WordPress, but themes are written in Babashka."

Documentation. Right now Biff only has reference docs. I want to add a lot more, such as:

  • A series of tutorials that show you how to build some application with Biff, step-by-step. Perhaps a forum + real-time chat application, like Discourse and Slack in one.
  • A page that curates/recommends resources for learning Clojure and getting a dev environment set up. Aimed at those who are brand new to Clojure and want to use it for web dev. If needed I might write up some of my own articles to go along with it, though I'd prefer to curate existing resources as much as possible.
  • A series of tutorials/explanatory posts that teach the libraries Biff uses. Each tutorial will have readers implement some web dev functionality without using Biff (like HTML rendering), after which they'll be shown how to do it with Biff. (Spoiler: the tutorials will secretly have readers implement all the helper functions that Biff providesby the end, readers will have implemented all/most of Biff from scratch.) This is intended for those who prefer a bottom-up approach to learning, or for those who are familiar with Biff and want to deepen their understanding.

As part of that, I plan to restructure the website, while taking lessons from The Grand Unified Theory of Documentation into account.

So yeah, that should be enough to keep me busy for a long time ๐Ÿ™‚. Somewhat amusingly, "writing code for Biff" isn't even one of those categories, but it'll happen as needed (e.g. I might port certain features from Platypub back into Biff).


  • Come chat with us in #biff on Clojurians Slack if you haven't joined already.
  • 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, you can become a sponsor too.
  • I also have some availability for consulting; email me if you have a project you'd like to discuss.
  • If you're interested in Biff, you may also be interested in my other work: The Sample and Tools for Online Speech.

Published by Jacob O'Bryant on 1 Aug 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.