Sign in

David Herman

@bitspittle.bsky.social
341 followers 71 following 158 posts

Working on Kobweb, a Kotlin web framework: github.com/varabyte/kobweb Also, Kotter, for writing CLIs: github.com/varabyte/kotter And Truthish, for asserts: github.com/varabyte/truthish www.linkedin.com/in/hermandave

PostsRepliesMedia
David Herman @bitspittle.bsky.social · 23/08/2026
But for your second point, I assume you would compute the hash code for the values you were packing into the long, not the long itself
010
David Herman @bitspittle.bsky.social · 23/08/2026
Computers are fast and the objects are short lived 🙃 Would it be a bad idea for the Kotlin standard library to add an inline function that basically computes the hashcode of a list of passed in vararg values?
100
David Herman @bitspittle.bsky.social · 23/08/2026
When overriding hashmap, I often use `arrayOf(val1, val2, ...).contentHashCode()`, would that have worked for your case here?
100
David Herman @bitspittle.bsky.social · 23/08/2026
Yes, 100%! Keeping your CSS local to just the code that needs it helps so much. I suspect many people burned by CSS were dealing with giant, monolithic stylesheets, full of tangled declarative properties; where making some tweak over here broke another style over there.
320
David Herman @bitspittle.bsky.social · 23/08/2026
CSS has a bad rep (and you can definitely find cases that deserve it) but over time I have come to appreciate its idea. I am the author of a Kotlin web framework, and I wrote about my thoughts here (Kotlin knowledge not required): kobweb.varabyte.com/docs/concept...
kobweb.varabyte.com
Learning CSS | Kobweb
New to CSS? How to start learning it via Kobweb's approach.
130
David Herman @bitspittle.bsky.social · 20/08/2026
New Kobweb CLI is also out, smoothing over some edges I've long wanted to polish. (The last CLI release was over a year ago!) github.com/varabyte/kob... I hope it makes Kobweb development just a little bit nicer.
github.com
Release v0.9.22 · varabyte/kobweb-cli
This release introduces some tweaks that make the Kobweb CLI just feel a bit nicer to use. What's New? No more lame "Kobweb may appear paused while Gradle is resolving / downloading dependencies"...
000
David Herman @bitspittle.bsky.social · 19/08/2026
🕸️ Latest Kobweb v0.25.1 released! Check out the release notes here: github.com/varabyte/kobweb/releases… 🤖 (Automated post via GitHub Actions) #Kobweb #Kotlin #WebDev
github.com
Release v0.25.1 · varabyte/kobweb · GitHub
This release adds a few quality of life features and bumps up some versions. [versions] compose-runtime = "1.12.0" kobweb = "0.25.1" kotlin = "2.4.10" [libraries] com...
131
David Herman @bitspittle.bsky.social · 05/07/2026
🕸️ Latest Kobweb v0.25.0 released! Check out the release notes here: github.com/varabyte/kobweb/releases… 🤖 (Automated post via GitHub Actions) #Kobweb #Kotlin #WebDev
github.com
Release v0.25.0 · varabyte/kobweb · GitHub
This release is functionally identical to v0.24.1 but with all Kotlin / Compose dependencies migrated to latest. [versions] compose-html = "1.11.1" compose-runtime = "1.11.2" ko...
040
David Herman @bitspittle.bsky.social · 03/07/2026
🕸️ Latest Kobweb v0.24.1 released! Check out the release notes here: github.com/varabyte/kobweb/releases… 🤖 (Automated post via GitHub Actions) #Kobweb #Kotlin #WebDev
github.com
Release v0.24.1 · varabyte/kobweb · GitHub
This is a jam packed release featuring long-planned tweaks to the network APIs as well as new lucide and material symbol icons! In the previous release, we revisited the backend network APIs to sup...
020
David Herman @bitspittle.bsky.social · 22/05/2026
Highly recommend catching this talk later for anyone who missed it! Full of interesting (and likely surprising) info about terminal capabilities, but most importantly, since it is well paced and full of live coding demos, it's just fun and effortless to watch.
0101
Reposted by David Herman
Ivan “CLOVIS” Canet @ivcanet.bsky.social · 21/05/2026
Kobweb demo with @bitspittle.bsky.social !
072
David Herman @bitspittle.bsky.social · 18/02/2026
Most notable features in this release: • Multipart requests / responses • Markdown support improvements • Annotated code to work with Kotlin's new unused return value checker Plus more. This one took a while, less due to code and more due to life stuff. Thanks to all users for their patience!
030
David Herman @bitspittle.bsky.social · 18/02/2026
🕸️ Latest Kobweb v0.24.0 released! Check out the release notes here: github.com/varabyte/kobweb/releases… 🤖 (Automated post via GitHub Actions) #Kobweb #Kotlin #WebDev
github.com
Release v0.24.0 · varabyte/kobweb · GitHub
In this update, we took some time to focus on the backend API, adding support for multipart requests. We also revisited the associated frontend APIs (and deprecated a bunch of them) paving the way ...
150
David Herman @bitspittle.bsky.social · 22/01/2026
Yegge mentioned in a recent gas town related post that he envisioned the 1000x and 10000x engineer, bolstered by AI. So I started imagining 10,000 engineers with only one CEO to manage all of them. And before I knew it, I was curled up under a desk crying for some reason.
100
David Herman @bitspittle.bsky.social · 18/12/2025
The only roadmap I have is docs.google.com/document/d/1... It includes goals but it's a bit high level. I do hope to hit 1.0 this year, and I'm going to spend the beginning of 2026 rethinking my approach to components because I really want to speed that up.
docs.google.com
Kobweb 1.0 Roadmap
All readers should feel welcome to make suggestions! But you may have come here from a read-only link, which is provided as a way to prevent accidental edits, since they are common. Feel free to sw...
010
David Herman @bitspittle.bsky.social · 11/09/2025
🕸️ Latest Kobweb v0.23.3 released! Check out the release notes here: github.com/varabyte/kobweb/releases… 🤖 (Automated post via GitHub Actions) #Kobweb #Kotlin #WebDev
github.com
Release v0.23.3 · varabyte/kobweb · GitHub
This release raises the version of kotlin to 2.2.20. [versions] kobweb = "0.23.3" kotlin = "2.2.20" ImportantPlanning to upgrade? Review instructions in the README. Full Chang...
140
David Herman @bitspittle.bsky.social · 03/09/2025
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.
000
David Herman @bitspittle.bsky.social · 03/09/2025
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.com
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.
030
David Herman @bitspittle.bsky.social · 03/09/2025
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!
kobweb.varabyte.com
Base Path | Kobweb
How to set a base path for your project (and what that means).
010
David Herman @bitspittle.bsky.social · 03/09/2025
🕸️ Latest Kobweb v0.23.2 released! Check out the release notes here: github.com/varabyte/kobweb/releases… 🤖 (Automated post via GitHub Actions) #Kobweb #Kotlin #WebDev
github.com
Release v0.23.2 · varabyte/kobweb · GitHub
We just learned our last release broke base paths, which is an important feature for anyone using GHP to host their Kobweb sites, so we're pushing this release out a little early. ImportantPlan...
210
David Herman @bitspittle.bsky.social · 02/09/2025
I asked my friend if I should make a social media site called "vouch" where if you invite people into it who get reported and suspended, you get suspended too. He said soon the whole network would be suspended. So yeah that sounds amazing, I think I might be onto something.
010
David Herman @bitspittle.bsky.social · 29/08/2025
Kobweb hit 2000 ⭐s on GitHub. 😳 I just wanted to say thank you to everyone who has supported Kobweb, in any way. I shared more expanded thoughts on LinkedIn: www.linkedin.com/feed/update/... (in case you'd like to read at least one post on that site which was written without any AI help!)
080
Reposted by David Herman
Sam Rose @samwho.dev · 23/08/2025
✨ Big O ✨ Let me take you on a visual introduction to what big O notation is in my new blog post: samwho.dev/big-o. With big O notation you can better understand how algorithms will perform in practice, finding orders of magnitude improvements often with very simple changes to your code.
29413105
David Herman @bitspittle.bsky.social · 24/08/2025
Looks great!! Hope building it was mostly painless 🙂
140
Reposted by David Herman
WeLoveIt.io @weloveit-io.bsky.social · 22/08/2025
NEW DEVELOPER INTERVIEW: @voxraygames.bsky.social’s Wouter van Oortmerssen (@wvo.bsky.social) explains why he built Skyrim with guns instead of Minecraft 2. 🎮 Read → www.weloveeverygame.... #IndieDev #Minecraft #Openworld #GameDev
0911
David Herman @bitspittle.bsky.social · 20/08/2025
🕸️ Latest Kobweb v0.23.1 released! Check out the release notes here: github.com/varabyte/kobweb/releases… 🤖 (Automated post via GitHub Actions) #Kobweb #Kotlin #WebDev
130
David Herman @bitspittle.bsky.social · 10/08/2025
ChatGPT5 is the "Sure" update. It keeps asking questions to continue the conversation, where saying "Sure" will keep it going. (NOTE: I even added custom instructions telling it not to do this.) OpenAI must be really incentivized to keep users stuck on longer conversations.
020
David Herman @bitspittle.bsky.social · 09/08/2025
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 🙂
010
David Herman @bitspittle.bsky.social · 09/08/2025
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.
000
David Herman @bitspittle.bsky.social · 09/08/2025
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.
100
David Herman @bitspittle.bsky.social · 09/08/2025
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)
110
David Herman @bitspittle.bsky.social · 08/08/2025
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.
100
David Herman @bitspittle.bsky.social · 08/08/2025
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.
100
David Herman @bitspittle.bsky.social · 08/08/2025
Over the last four years of Kobweb development, the biggest performance jump we got BY FAR was improving our Gradle plugin to be configuration cache friendly. Learning how to play nice with Gradle pays dividends.
150
David Herman @bitspittle.bsky.social · 07/08/2025
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.
120
David Herman @bitspittle.bsky.social · 07/08/2025
github.com/JetBrains/in...
230
David Herman @bitspittle.bsky.social · 07/08/2025
@jetbrains.com I mean, I love you guys, I'm building a whole open source web framework on top of your stuff because I am a fan of how aligned you are with developers. So... Kineto, a no-code approach to building a website? Really? With prompts in your demo like this? What are we even doing here?
Official prompt used by Kineto for creating a web page (emphasis mine): 

"Make an html5 page of how JetBrains IDE could look like in the year 2030. *Make no mistakes.* Return single html/js/css code block."
250
Reposted by David Herman
Márton Braun @zsmb.co · 07/08/2025
New Kotlin video! Context-sensitive resolution is one of those features that will kind of quietly blend into the background while making a lot of code much nicer. And you can already try it in Kotlin 2.2 as an experimental feature! Check out the details: www.youtube.com/watc...
1296
David Herman @bitspittle.bsky.social · 23/07/2025
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.
010
David Herman @bitspittle.bsky.social · 23/07/2025
"I just called the police a little bit, but since there's no risk, don't sweat it!"
110
David Herman @bitspittle.bsky.social · 22/07/2025
!!! Wow. Well, I suppose I found out about it from a skeet from a person that found out about it from a debugging window.
020
David Herman @bitspittle.bsky.social · 22/07/2025
Thanks for highlighting this talk. It was a fun watch!
010
David Herman @bitspittle.bsky.social · 21/07/2025
I think turning negative comments into content can be great -- it's like a reverse uno card. But definitely don't let them get to you (calling them "weirdo" or highlighting you pressed the thumbs down button on them). That means they won. Bad comments are a joke and should be treated as such!
000
David Herman @bitspittle.bsky.social · 21/07/2025
Just collect your stickers Avery. Collect your stickers, say "Thank you Miyamoto", and don't even think about making any eye contact or asking any questions.
010
David Herman @bitspittle.bsky.social · 21/07/2025
www.youtube.com/watch?v=W_4T... Bob Ross in the age of AI. There are no mistakes, only h̴̯̔a̸̱̅p̵̘͠p̷̜͒y̴̙̏ ǎ̶̻̥̱͋c̶͎̲̼̈́ͅc̸̢͉͎͓͙̳̋̀̈̊̌̾̑i̵̡̢̤̞͇͗̒d̶̨̩̣͚̤̞͉̎̃̃͋̃͘ę̴̼͇͔̳̓̌ņ̶͖͖̺͍̖̦̓͂͜t̸̘̽͑s̴̨̛̯̘̲͓̼̅̃̇̚͝
youtube.com
If Bob Ross used A.I.
YouTube video by Wizards with Guns
010
David Herman @bitspittle.bsky.social · 15/07/2025
The adults in Charlie Brown's world.
000
David Herman @bitspittle.bsky.social · 13/07/2025
You can read about past founders who exited when offered vast fortunes to sell what they built and step down, only to realize that they had already had enough money before selling, and now they had way more money than they could spend, making the extra useless.
010
Reposted by David Herman
Rune Skovbo Johansen @runevision.bsky.social · 09/07/2025
I got translucency working on the trees ☀️🌳 Hell yeah, let's stroll! #GameDev #ProcGen
1017211
Reposted by David Herman
Randall Munroe @xkcd.com · 10/07/2025
Fix This Sign xkcd.com/3113/
Comic. [Person with ponytail using handheld device in front of a large sign with crooked, off-center header, with crooked QR code (with illegible URL) and crooked list beneath] Header: DOANATE TO FIX THIS SIGN! List: $10 Fix kerning [kerning around “rni” of kerning is difficult to read]; $20 Align Columns [out of alignment] $20 Fix text size [much smaller text size]; $50 Fix typo; $50 Fix centering; $100 fix rotation. PERSON: Grrr… [caption] My new company’s business model is based on extorting graphic designers.
774345723
David Herman @bitspittle.bsky.social · 10/07/2025
Mine is set to Snoopy. I ain't ever going back.
020