Fork me on GitHub
#clojure-europe
<
2020-10-14
>
plexus04:10:36

Where my Belgians at (if you can read this you are now an honorary Belgian) https://twitter.com/drGerlant/status/1315997215152799747

ordnungswidrig06:10:04

I must confess that I realized only until miday that this was actual multiple languages. And I don’t even speek dutch(?). Lol. I was missing some german sprinkled in though. Awesome text.

plexus07:10:04

yeah it does bother me that this is dutch/french/english, while official languages in Belgium are dutch/french/german, but to be fair most belgians understand English, most don't understand German

thomas10:10:45

I don't really speak any French, but I can read this with out too many problems

plexus12:10:45

It's all Indo-European to me

raymcdermott15:10:57

glad I passed the informal test, especially since I am now a citizen 🙂

otfrom06:10:39

I think I might be 1/3 Belgian 😉

😁 6
3
slipset06:10:11

Did some maths with one of my ten year olds this morning, as one does. Anyways, we ended up in some term rewriting. Like 2 + 3 is just 1 + 1 + 1 + 1 + 1. In order to do this, you need (AFAICT) three things. You need to be able to add one, subtract one, and check if something is zero. Which leads me to Clojure. I’ve sometimes wondered why we have inc, dec, and zero? And I guess a reason for this is that these are the three building blocks for arithmetic. And good morning!

ordnungswidrig06:10:46

@slipset you don’t even need subtraction, just the concept of peno numbers: 2 + 3 = S(S(0)) + S(S(S(0))) = S(0) + S(S(S(S(0)))) = 0 + S(S(S(S(S(0))))) = S(S(S(S(S(0))))) = 5

ordnungswidrig06:10:23

Based on S(a) + S(b) = a + S(S(b))

slipset06:10:29

Ah, nice! I'll have to introduce her to Peano numbers next time we do maths 🙂

agigao07:10:39

დილა მშვიდობის!

borkdude07:10:35

@slipset Maybe you can also teach them integer overflow, then you can simulate subtraction with only addition?

9
Ben Hammond07:10:08

does this count as a non-euclidean thing? presumably the jump from MAX_INT to MIN_INT is not considered to be smooth

Ben Hammond07:10:47

dunno, maybe it is, depends on your frames of reference

slipset08:10:39

so the ints are basically represented in a ringbuffer 🙂

slipset08:10:19

Doesn't make sense in maths as you need the concept of an infinite number of, well, numbers.

ordnungswidrig08:10:27

Integers forma quotient ring so techincally addition is enought.

ordnungswidrig08:10:45

Ring don’t need to be infinite.

ordnungswidrig08:10:07

I think it’s also a monoid ring

borkdude08:10:31

Btw, did you know that addition has an identity element (zero), but subtraction doesn't.

ordnungswidrig08:10:52

I doesn’t? :thinking_face:

borkdude08:10:44

(- 0 1) != (- 1 0)

ordnungswidrig08:10:01

no wait, that’s commutation

ordnungswidrig08:10:22

so 0 is the neutral element

borkdude08:10:29

yes, but for an identity element it should also hold that (- 0 x) = x

borkdude08:10:49

this is why `(-)` doesn't work in Clojure

ordnungswidrig08:10:52

That’s why I don’t like `-`

borkdude08:10:55

but `(+)` does

ordnungswidrig08:10:21

And why accountants avoid subtraction until the very last moment

ordnungswidrig08:10:30

ordnungswidrig08:10:33

ordnungswidrig08:10:53

If your really fances then maybe(!) take the difference. But only if absolutely necessary :)

dominicm08:10:41

Someone just said IDEA and my first thought was "ugh, intellij". But then I realized that they were not a programmer and they just had an idea they were excited about...

😄 9
ordnungswidrig08:10:36

Don’t most developers refer to the software as “IntelliJ” (which is also misleading)

Ben Hammond10:10:56

`Cursive` also works...

Ben Hammond10:10:54

none of their other products are named intellij though, so the `Idea` part has always seemed superfluous

Ben Hammond10:10:00

and indeed confusing

Ben Hammond10:10:24

`Jet Brains` usually makes me think > Vulnerable to Seagulls

otfrom12:10:27

we're all vulnerable to the seagulls in our life

otfrom12:10:46

they swoop in, steal your food, flap, squawk, shit everywhere and then leave

thomas13:10:33

@otfrom that sounds like a manager I once had!

dharrigan13:10:58

A Flock Of Managers

thomas13:10:29

seagull management! almost as bad as Mushroom management.

dharrigan13:10:00

dharrigan13:10:05

or rather ddg

dharrigan13:10:38

omg, there is actually this

dharrigan13:10:00

> "Seagull managers fly in, make a lot of noise, dump on everyone, then fly out."

dharrigan13:10:30

the only thing missing from the prior apt analogy is the `steal your food` bit

otfrom13:10:31

that would be what I was referencing

javahippie13:10:06

Once had a manager whose style was described as “Management by Crocodile”, but I am not sure if it’s translatable. “He’s surfacing, gapes his mouth wide open (meaning: talking loudly and a lot), and submerges again”.

otfrom13:10:16

ooh, that sounds like me 😉

javahippie13:10:02

Suprisingly, in german it would be… shorter: “Auftauchen, Maul aufreißen, abtauchen”

😂 3
thomas13:10:27

oohh.. I hadn't heard of that one. Mushroom management is. Keep everyone in the dark, throw lots of sh*t over them and as soon one of them sticks it head out you chop it off.

😱 3
thomas13:10:13

Any way... a Clojure (related) question....

dharrigan13:10:24

Clojure? Get out of here!

thomas13:10:40

I have a flamegraph... performance measurement.... but what do I do with it now?

thomas13:10:16

I know, shocking. Clojure, so 1959 this Lisp thing.

javahippie13:10:02

What was your goal of creating one? Was there a performance issue you are trying to debug?

thomas13:10:38

yes, I am getting more latency then the reference implementation.

thomas13:10:51

So I was wondering what could cause that

otfrom13:10:33

what are you using to create your flame graph?

thomas13:10:48

clojure-goes-fast/clj-async-profiler

thomas13:10:58

but I think I begin to understand it....

thomas13:10:17

ok, I know that you shouldn't do `swap!` on the fast path... but what is a good workaround for this?

borkdude13:10:39

@thomas using `volatile!` and `vreset!` might help if you don't need thread safety and watches

thomas13:10:29

ok ta, let me have a look at that.

thomas13:10:00

that might do the trick... let me try.

thomas14:10:15

and maybe not... as I have one big `atom` holding state for all the clients and I need to update it for each client on each interaction with the client.

borkdude14:10:32

maybe partition it into multiple atoms for each client?

thomas14:10:57

yes, I was thinking about that.