RSSAmplifier

Blog

Biff

biffweb.comRSS feed ↗10 posts

Latest posts

biff.datastar, biff.ring

A couple more Biff 2 libraries are out the door: biff.datastar : the dumbest/awesomest possible way to make a reactive, server-side-rendered web app. Over the past several years I haven't put much priority on making it easy to make fancy reactive/real-time/collaborative UIs since my UI needs are typically pretty simple. But this architecture is actually really nice even when you don't need the…

Database adapters in Biff 2

I've released two new Biff libraries, both database adapters: biff.sqlite and biff.xtdb . Both of them implement some interfaces used by various other Biff libraries, and they also both implement additional functionality that can be useful to Clojure apps even if they aren't using Biff. The interfaces So far, modifying a Biff app to use a different database than the default has been kind of…

biff.fx: lightweight effects system

I'm releasing another Biff 2 library: biff.fx . It's a lightweight approach to removing effects from your application logic, which makes that logic easier to understand, test, and reuse. There are basically two ideas here. First is the common approach of having your code return data describing effects (http requests, database queries/transactions, etc) it wants to run instead of running those…

New library: biff.core

As I wrote about previously , I've been working on splitting Biff up into a bunch of separate libraries and changing various things along the way. I've completed a rough draft of all twelve libraries and am now going through them one-by-one to polish and release them. The first library is now ready. biff.core : system composition and other interfaces for Biff projects. This is the glue that holds…

Biff 2.0 sneak peak

I have for the past year or two been working on some large Biff changes, such as those discussed in Structuring large Clojure codebases with Biff and Biff support for XTDB v2 is in pre-release . Now that coding agents have gone mainstream (and in particular, now that I personally have started using them heavily), I've had a few more ideas for changes I'd like to make to Biff. And also thanks to…

Biff support for XTDB v2 is in pre-release

I've been working on/preparing for migrating Biff to XTDB v2 since that became generally available in June. After investigating the deployment options and performance characteristics, I've added some XTDB v2 helper functions to the Biff library (under a new com.biffweb.experimental namespace) and I've made a version of the starter project that uses XTDB v2. You can create a new XTDB v2 Biff…

Relaunching Yakread: an algorithmic reading app

I've recently finished a year-long rewrite of the Yakread codebase and have released it under a source-available license. Yakread is a reading app that makes heavy use of algorithmic recommendation/filtering. I originally launched it in 2022 during the last leg of my time as a full-time entrepreneur. It's written with Biff , a Clojure web framework that I also created during that time. I'm…

Writing your tests in EDN files

I've previously written about my latest approach to unit tests (which I have been informed is called "snapshot testing"): [Y]ou define only the input data for your function, and then the expected return value is generated by calling your function. The expected value is saved to an EDN file and checked into source, at which point you ensure the expected value is, in fact, what you expect. Then…

EDN-infused plain html forms

Merry solstice. After about a year, I'm roughly 80% done with the Yakread rewrite. Now all that's left is the remaining 80%. My last post is still a good explanation of the new Biff things I've been hacking on as part of that. Over the past couple weeks I've also been thinking about how to do forms. So far Biff hasn't provided anything special for forms: if you need an email address, you do…

Structuring large Clojure codebases with Biff

I've been making some progress on rewriting Yakread (a fancy reading app) from ~scratch and open-sourcing it in the process. Along the way I'm experimenting with potential new features for Biff , my Clojure web framework, which Yakread is built with. In particular I'm working on approaches for keeping Biff apps more manageable as the codebase grows: the original Yakread codebase was about 10k…