clojure-europe

thomas 2026-04-21T07:05:03.028299Z

mogge

simongray 2026-04-21T07:08:47.992689Z

Morning

simongray 2026-04-21T07:14:10.374869Z

I really like this defence of dynamic typing that Rich made on Reddit on the other day: https://www.reddit.com/r/Clojure/comments/1sn9255/rich_is_joining_us_in_the_chat_on_youtube_for_the/ogm8dcu/ > In Clojure, you always program as if over wires, i.e. using simple data structures and checking things dynamically. There’s a reason that the internet application tier is not statically typed. You can’t have rigid contracts and the concomitant synchrony required to adopt changes all at once. I even watched the infamous HttpServletRequest rant multiple times, but for some reason it never clicked with me that this is (of course) the core of Clojure’s type system.

❤️ 1
gunnar 2026-04-21T07:15:58.570889Z

What's the infamous HttpServletRequest rant?

simongray 2026-04-21T07:16:13.261519Z

https://www.youtube.com/watch?v=aSEQfqNYNAc

gunnar 2026-04-21T07:16:29.183549Z

Thanks!

borkdude 2026-04-21T07:26:05.440649Z

Yeah, that "program over the wire even when you're not" was really illuminating to me, I remember thinking about this a lot when I first learned Clojure and taught it to students

slipset 2026-04-21T07:28:13.787169Z

Its interesting how a lot of paradigms are like «programming locally even if you're not» and the pain it incurs when you follow them. Like micro services.

slipset 2026-04-21T07:29:01.226619Z

Basically trying to abstract away the network. Which always leak.

💯 2
borkdude 2026-04-21T07:29:39.834569Z

how are microservices trying to abstract away the network?

borkdude 2026-04-21T07:29:48.495209Z

I mean, you can make microservices in Clojure?

borkdude 2026-04-21T07:30:23.226229Z

I forgot what the difference was between regular services and microservices at this point btw

slipset 2026-04-21T07:30:57.407529Z

Yah, but you start out with microservices, and you just consider a network call to be the same as a local function call. And then the real world hits you.

slipset 2026-04-21T07:32:05.594549Z

Or you started out with SOAP or Corba or any RPC tech that tries to abstract away the networky bits.

gunnar 2026-04-21T07:32:38.750009Z

I can see that last bit. But wouldn't you be using messages/queues to communicate between microservices?

👍 1
borkdude 2026-04-21T07:32:45.563719Z

is microservies like corba or RPC? I never really saw it that way, but maybe I don't have a good mental model of what they are. I always thought they just were services, like any service

slipset 2026-04-21T07:34:32.162079Z

Not the point I was trying to make. I guess what I liked was Rich was saying something like programming as if over the wire, even if you're not, whereas a lot of tech is like programming as if your local even if you're not. So a bit contrarian.

👍 3
borkdude 2026-04-21T07:35:02.976359Z

optimize for the worst everywhere... it sounds like. :P

😁 1
slipset 2026-04-21T07:35:42.141069Z

Or «build resilient systems»

🧱 1
gunnar 2026-04-21T07:36:08.465509Z

But clojure being a pragmatic language, you take in IO calls as local calls when doing network and especially database. You don't program as over the network then.

borkdude 2026-04-21T07:36:08.576039Z

Just generate a system with AI ad-hoc on every request (OMG no)

gunnar 2026-04-21T07:37:02.151879Z

(i might be missing the point here entirely, @slipset)

slipset 2026-04-21T07:38:00.175749Z

@gar you're at least missing my point :)

borkdude 2026-04-21T07:38:44.847989Z

I think it's fair to say you're not in concomitant synchrony

slipset 2026-04-21T07:39:11.720759Z

That's too many words I don't understand :)

borkdude 2026-04-21T07:39:20.428839Z

They are from Rich's quote

gunnar 2026-04-21T07:39:34.319109Z

Haha, I had to look them up 🙂

slipset 2026-04-21T07:40:14.009539Z

I kinda understood it in his post. Basically, both sides have to evolve the types in synchronicity. Which is super hard in a distributed system.

borkdude 2026-04-21T07:40:57.515829Z

oh yes... this is where typed systems have this "types" library which is used in all the microservices and they all have to be updated to vnext

slipset 2026-04-21T07:41:15.544309Z

I think we (as web devs) deal with that all the time, we just don't think about it, because we speak in json.

borkdude 2026-04-21T07:42:03.865239Z

"You have to update your microservice, because I changed a String to a Maybe[String] here"

borkdude 2026-04-21T07:43:21.150959Z

"No I don't, because I wrote mine in Clojure 😎 "

borkdude 2026-04-21T07:44:16.406699Z

"But, ... that's against our policy." "Nah, it's just a jar man. ☺️ "

☺️ 2
fmjrey 2026-04-21T08:25:24.546349Z

Yes that comment hit a real nerve, the same one that led me to clojure after a few years of java starting with EJB 1.0! Back then most people believed in the EJB brochure, but the more I used EJB, the more it felt cumbersome and over the top to have objects talk to each other. I could not see it scale up to and was somehow bemused to see the industry pushing for a software and component factory model, I could not see it work. Spring did not help, it mostly simplified DX but did not fight the idea of objects talking over the network with shared types. Eventually XML was inserted into the communication with SOAP and WS-* , mainly to facilitate firewall traversal and still not to fight the idea of sharing a type system over the network. XML was however a foot in the door for text/human readable exchange formats, an opening through which JSON quickly spread. It's definitely better today but I'm still amazed how much inertia there is from that time.

eaj 2026-04-21T08:33:06.808299Z

This conversation reminds me of https://grugbrain.dev/#grug-on-microservices: > grug wonder why big brain take hardest problem, factoring system correctly, and introduce network call too > seem very confusing to grug

💯 1
😄 3
jasonbell 2026-04-21T07:58:25.854619Z

Morning

teodorlu 2026-04-21T07:58:34.953189Z

good morning!

mdiin 2026-04-21T08:32:11.640969Z

Good morning

teodorlu 2026-04-21T11:10:18.841359Z

@reefersleep your pavlovian training is taking hold. Just came in from a lunch walk! Delightfully sunny today. ☀️

🙌 2
simongray 2026-04-21T11:12:49.341249Z

I too had a lunch walk, but mostly because I wanted to see what they had in the canteen at the far end of campus.

teodorlu 2026-04-21T11:15:23.562599Z

as good an excuse as any! Did you get anything interesting?

simongray 2026-04-21T11:22:29.770729Z

There was some kind of lentil & pumpkin stew that looked more appetising on the menu than it looked in real life, so I opted for spicy carrot soup and sourdough bread instead (AKA the budget option).

🥕 3
reefersleep 2026-04-22T10:31:44.986979Z

That's a great excuse!

reefersleep 2026-04-22T10:32:21.145389Z

I didn't get to walk yesterday, but I'm going to right now 🙂 Let's go! 😎

🕺 1
teodorlu 2026-04-22T12:57:41.833349Z

I finished mine before 12! 😁

teodorlu 2026-04-22T12:58:15.911539Z

Being held accountable for taking sunny walks is a kind of funny side effect of hanging around in an online programmer community 😂

👮‍♂️ 1
🌞 1
imre 2026-04-21T11:31:43.218929Z

good morning

ray 2026-04-21T18:10:31.869619Z

Good morning

😍 3
☺️ 2