Hey all. What's the topic for Monday's Meetup?
@merklefabian would love to see demo / examples of Datastar from Clojure. Or @norman, want there a topic you proposed recently?
i’d be down for a everyone bring laptops and play with clojure-mcp as well
Yea. I've got it installed, but have not done much with it. Personally, I'd prefer a bit more time to get used to it and get some experience before connecting on it.
None of my topics have been scheduled yet, so I don't have any presentations ready
didn’t @camdez have something he wanted to talk about?
I could talk about Flow. I’m very interested in the MCP idea too. I think we generally need to get some presentations going on using AI in Clojure development.
and mcp appeals to me precisely because we are all figuring it out. It would actually be interactive and learning
@camdez Would love to see what you've got for Flow. How much time do you think? Could you be ready for Monday? @dpsutton We could do multiple on clojure-mcp. Initial; setup / discussion / play, and later something more substantial after experience. @norman Do you want to present something on August 11?
ok - I'll take August. Probably the UI state machines stuff, but I do have a fun webrtc project I did on the side in clojure that I think would be pretty interesting
that sounds dope
Flow and MCP sound interesting. We could do lightning rounds and discussions. @mlimotte Happy to answer any questions about Datastar, it’s amazingly simple yet powerful
Questions => Presentation 😉
Demo > Presentation ^^
Present the demo!
Sadly I probably can't make it to be the voice of reason wrt AI
You'll all have to go without the usual wet blanket
Hey ya’ll, I’m gonna have to miss the meeting as my dad’s dementia has gotten worse and I’m his primary care giver. Thanks for helping out this last while as I’ve been dealing with dad’s health for the last couple of years. Sam
Sorry to hear that Sam.
i’m really sorry to hear that Sam
Thx
I'll ask ChatGPT to chime as the nay-sayer.
json-test=> (json/read-str "{\"key1\":1,
\"key2\":2}")
{"key1" 1, "key2" 2}
json-test=> (json/read-str "{\"key1\":1, // this is a comment
\"key2\":2}")
Execution error at clojure.data.json/invalid-key-exception (json.clj:372).
JSON error (non-string key in object), found `/`, expected `"`
;; interacted with clojure-mcp
json-test=> (json/read-str "{\"key1\":1, // this is a comment
\"key2\":2}")
{"key1" 1, "key2" 2}asked claude to extend clojure.data.json to support comments
concise. I had to tell it not to introduce tons of diffs. Very hard in this file because there are bespoke macros with bespoke indentation rules. But it got it. Note it is using codepoint-case a macro specific to this repo.
wild that it basically one-shot this. told it what i wanted and it’s got code ready to go
How's it handle // inside strings?
Walking dog. It wrote a namespace for tests. I debated telling it to move them into the regular test namespace and also write some generative tests
(deftest test-comments-in-strings-preserved
(is (= {"url" ""}
(json/read-str "{\"url\": \"\"}")))
(is (= {"comment" "/* not a comment */"}
(json/read-str "{\"comment\": \"/* not a comment */\"}")))
(is (= {"path" "/path/to/file"}
(json/read-str "{\"path\": \"/path/to/file\"}"))))
yes it wrote those to begin withcatching the url is a particularly nice touch
It is pretty good at regurgitating its training set
even if it were just that--(and it built two features with me in metabase earlier today which are not in its training set)--it would still be a very useful tool
Useful is a broad term
Useful how?
like it built the frontend, coded up the backend, and paired with me. genuinely paired with me on a feature to handle changes in schema
Is the goal simply more code, or to decrease the negotiating power of engineers, increase shareholder value, make life better with new ideas, regurgitate slop?
for this the goal was for me to build a feature to handle schema changes in databases synced to metabase
was fun to think through consequences, get the UI up, etc. I enjoyed doing it. Couple things: it has totally changed what i expect from a proof of concept or even a product doc. And makes it easier to debug things and write tests
The amount of product (productivity) has gone up then
I wonder where the gains will settle wrt wages
How far do we take that? We certainly upgrade processors. Get more ram. Happily use electricity. Productivity tools get added in.
I just think it's important to understand the repercussions of the tools we use
For instance, could you have coded that with help from a junior engineer?
Someone who would then gain knowledge from it and improve themselves and your team as a whole?
The machine doesn't learn from you, it starts fresh each prompt (you said you had to try a few times, natch).
Could you have done it yourself, maybe also gaining knowledge that you could apply to other issues later on instead of just letting the machine do it? I think it's worth thinking about.
Another fun one: how much did it cost to prompt out that code? The AI folks have emphasized that LLMs are just the new compilers and anyone skeptical is akin to those devs that said anyone who used a C compiler over writing ASM was wrong.
But if that's true, the AI folks have also successfully made it so running the "new javac" costs money.
Is that cost fully borne by you, the user, right now? Is it subsidized by investor money? What happens when you become so reliant on it that you cannot work without it and the investors wish to recoup their investment?
Almost all Pro-AI folks stop the cost benefit analysis at "it is faster". I think it is vitally important to think through all the repercussions of a tool before using it. Just because MongoDB is faster doesn't mean it's a good DB to store financial information in, for example.
I admit these things are pretty neat. I've been using GH Copilot / Claude on some personal dotfiles stuff since I like to keep abreast of things. I still think that it's far from settled that these things are net-positive for human beings in general and software engineering in particular.