Clojurists Together funding
Biff was selected for another grant from Clojurists Together! Thanks to everyone who donates to them. This time I’ll be working to write up a bunch of the stuff that I have listed under the Roadmap section of Biff’s content library. It falls under three categories:
how-tos, especially for demonstrating how to swap out Biff’s default choices with other stuff (like XTDB → Postgres, htmx → Re-frame, that sort of thing).
essays, especially for explaining the rationale behind Biff’s default choices.
“Biff from scratch”, a series of guides that will show you how to build a Biff-style web app the traditional Clojure way–by piecing all the libraries together yourself, without a framework. It’s meant to give you a deeper understanding of how Biff works under the hood.
I’m hoping that these docs will help people to really master the fundamentals of both Biff and Clojure web dev in general.
Defn podcast interview
I was interviewed back in July. We talked about htmx for a bit and probably some other stuff too. It was a fun chat!
I got a job
I mentioned this in my other newsletter already, but: I have a job now (yay). Since late July I’ve been working at Tyba, an eight-person startup in the renewable energy space. They use Clojure btw.
What this means for Biff is: not much. I’ve been spending about the same amount of time working on it as I was previously. The main difference is that I’ll be sticking to a more regular schedule of working on Biff a little bit each week instead of doing a bunch of work every 4-6 weeks.
New Biff forum
With my new work schedule, I've been thinking about how to still find time to write (Biff may have survived me getting a job, but my writing habit, not so much). I thought it might be fun to restore an old Discourse forum that I experimented with for a few months last year. I'm using it for all my projects, and there's a section for Biff. I'll be posting to the forum regularly (๐ค), and for this newsletter I'll just copy-and-paste stuff from the forum every once in a while (hence the "Discussion" links). Hopefully I'll be able to stick with this workflow.
You're welcome to post to the forum as well. I'm going to update the Biff website so it mentions both the forum and the #biff Slack channel as good places to ask questions.
Updates and roadmap
As per Clojurists Together funding, I’m planning to spend about half of my Biff time over the next few months on writing documentation/content. The remaining time will be spent on code.
I cut a release for v0.7.9 a couple months ago; it has a few small tweaks. I’ve also technically made a v0.7.10 release, though I haven’t got around to publishing a release post on GitHub. That one modifies the template project so that in new projects, the middleware stack is copied into your project source. That way it’s easier to modify and debug.
Other than that, I’m currently modifying the bb deploy
and bb soft-deploy
commands so that they always use rsync to push your code to the server. They’ll fall back to git push
only if rsync isn’t avaliable (e.g. if you’re on Windows without WSL). It occurred to me that there’s no real advantage to using git push if rsync is an option, and this will eliminate the need to deal with some git push
-related inconveniences/bugs that have popped up.
Following that I’ll be sanding off a few rough edges that have come up on Slack lately, and then I’ll be doing a bunch of XTDB stuff. I still have not had a chance to play with v2 yet. I’d like to make a proof-of-concept fork/branch of Biff with that replacing v1. In the mean time before v2 is production-ready, I’ve thought it might be nice to revisit Biff’s transaction format and see if it could be made a little more ergonomic. That would also be a good chance to refactor the biff/submit-tx
code, which is a bit hairy.
(I also wonder if some of this XTDB helper stuff might be worth releasing as a standalone library, so it can be used outside of Biff projects…)
Another thing I'd like to do is figure out a good story for materialized views in Biff, so queries can stay fast as your database grows in size. This has been the main pain point I've had in my own apps. A secondary search index(es) for XTDB might work well; that's how the Lucene module works. It also wouldn't hurt to check out Rama.
If I actually finish all that and nothing else jumps to the head of the TODO list, the final things I have planned are to work on Yakread and Platypub. I’m planning to open-source Yakread and finish implementing a few features that I’d like for myself, at which point I’d move on to Platypub for a while and get that fully baked and approachable for potential contributors. Then I’ll circle back around to Yakread and make that approachable as well—although I'll open-source Yakread in the initial pass, I won’t spend much time trying to simplify things for contributors until after I’m satisfied with Platypub.
We’ll see how far I get into that before all my plans get reorganized ๐.
Published by Jacob O'Bryant on 6 Sep 2023