David Herman
banner
bitspittle.bsky.social
David Herman
@bitspittle.bsky.social
Working on Kobweb, a Kotlin web framework: https://github.com/varabyte/kobweb

Also, Kotter, for writing CLIs: https://github.com/varabyte/kotter

And Truthish, for asserts: https://github.com/varabyte/truthish

https://www.linkedin.com/in/hermandave/
Squarespace used obviously AI-generated text to respond to a ticket of mine, using the sort of generic, patronizing platitudes that only an AI could muster, all to indicate "they understood how frustrating the situation must have been." No response would have been better.

I'm an ex-customer now.
September 3, 2025 at 8:18 PM
Trivial!

I used github.com/cbrgm/bluesk...

as seen here: github.com/varabyte/kob...

You need to set two GitHub secrets and you're good to go.
GitHub - cbrgm/bluesky-github-action: Send posts to Bluesky Social from GitHub Actions
Send posts to Bluesky Social from GitHub Actions. Contribute to cbrgm/bluesky-github-action development by creating an account on GitHub.
github.com
September 3, 2025 at 8:11 PM
Small release. Handful of fixes included, but released early because v0.23.1 broke anyone using the base path feature (kobweb.varabyte.com/docs/concept...). Sorry about that!
Base Path | Kobweb
How to set a base path for your project (and what that means).
kobweb.varabyte.com
September 3, 2025 at 7:57 PM
Interesting. I've DMed him before, it was a good interaction. When we find one of his replies for a question we are searching for, it's always a good answer.

But anyway, even more pressure for the Gradle technical writer -- make Vampire obsolete! I'm sure he wouldn't mind the break 🙂
August 9, 2025 at 4:29 AM
There's a guy in the community, with the handle Vampire, who is so prevalent that I am almost certain you know who I'm talking about. He has done more to help us understand idiomatic Gradle than any other source. It should have been the official docs that hammered home this stuff though.
August 9, 2025 at 2:12 AM
That's good to hear! I'll keep an eye out. I haven't reviewed the docs for a fair bit now.

I'm not really sure I can think of a specific request. I'm more imagining a full rewrite of the docs. A guide that is simultaneously informative and concrete in its examples.
August 9, 2025 at 2:12 AM
And I'd love way better official Gradle docs and tightened up APId so writing such a blog post would be totally unnecessary 😛 (I actually appreciate they're at least working on the second part)
August 8, 2025 at 11:18 PM
We now communicate between tasks when necessary by serializing into / deserializing out of a file (not sure why gradle doesn't support this as a first class concept). We hit snags with plugins that were not configuration cache friendly but that's better now. We updated to lazy APIs everywhere.
August 8, 2025 at 10:56 PM
I was lucky in that I had a peer who did a lot of the migration. A lot of it was trashing my using `dependsOn` everywhere, pushing harder into chaining properties lazily with map and flatMap, and really understanding inputs and outputs.
August 8, 2025 at 10:56 PM
Technically, we should avoid testing this stuff. That's Oracle's job. I might suggest injecting custom logic via the strategy pattern, and/or assert on some other aspect of the state.

Otherwise, maybe create a utility method that blocks until its own allocated weak reference is cleared.
August 7, 2025 at 10:24 PM
August 7, 2025 at 8:29 PM
Great question. Someone like @gergely.pragmaticengineer.com might be in a better position to know, although this might be too small fish to attract much attention unless it's part of a bigger pattern.
July 23, 2025 at 3:42 PM
"I just called the police a little bit, but since there's no risk, don't sweat it!"
July 23, 2025 at 2:36 PM