clojure-switzerland

2020-12-14T03:45:51.032200Z

@mpenet How dare you turn down on your hometown?! Especially during « the Escalade »... :) I hoped Facebook Libra would have brought something to Geneva. There is Sixsq and RTS using Clojure in Geneva. I think there are a lot in the biotech scene there though. HPC could be a cool field.

2020-12-14T05:18:55.033100Z

@sam What sort of environment do you find 30m from the center of Zurich? By that I mean is it a small rural town, a contiguous suburb of Zurich, something else?

mpenet 2020-12-14T06:44:32.035100Z

I forgot sixsq! Great bunch. I didn't know rts is using clojure now, is this just for a few projects (rtslab?) or is it somewhat official?

sam 2020-12-14T07:24:33.043800Z

A rural village in wine country in my case. But you can live in small towns, larger towns (Winterthur), suburbs, you name it. A lot of people do, not only for the quiet, but because Zurich itself has expensive rent. Job-wise I really think it's one of the top places to live. Salaries are high, and taxes moderate, which you can truly benefit from if you manage your living costs accordingly (these can be very high).

2020-12-14T08:29:11.044300Z

@mpenet I think there are even comments on the official webpage of Clojure! https://clojure.org/stories/rts

2020-12-14T08:30:02.045Z

@paul.legato 30 mins of Zurich can be the middle of litteraly nowhere (especially in the south of Zurich, where you end up in the middle of the mountains).

2020-12-14T08:30:37.045400Z

I am still trying to check who uses Clojure in ZH though.

sam 2020-12-14T09:09:31.046800Z

@neo2551 sorry, not entirely sure if it was mentioned or you are aware, but http://deep-impact.ch does their non-AI backends in Clojure (I used to work there).

sam 2020-12-14T09:10:02.047300Z

They have also done some work with ClojureScript, but the major investment is in the backends.

sam 2020-12-14T09:10:52.047900Z

I hope to use Clojure once my company starts to grow 🙂

mpenet 2020-12-14T09:16:33.048900Z

http://finity.ai as well (lausanne)

mpenet 2020-12-14T09:16:54.049200Z

they are also behind http://paper.li, which is also mostly clojure

2020-12-14T09:22:36.050400Z

@sam It would be good to research the AI with Clojure haha, this is where I am mostly interested 🙂 @mpenet Great, I did not know them! Maybe once I have to go back to Geneva, I will think about them.

2020-12-14T09:26:07.050800Z

@sam Where do you work now?

sam 2020-12-14T09:28:37.051500Z

I have my own company, doing consulting and whatever code the client needs, http://saydo.co (very customer-oriented for now)

2020-12-14T09:34:21.051700Z

Did you advise any company on using Datomic?

sam 2020-12-14T09:36:02.054100Z

The companies I have been working for up to now have not been in the context of being able to switch to Clojure or any special DB (in fact, I’m staring at some PHP code right now 😅). We did use Datomic at DI.

sam 2020-12-14T09:36:05.054300Z

I’m quite cautious about recommending major technical movement 🙂 So much value in existing code!

mpenet 2020-12-14T09:36:37.054700Z

there is also someone from lambdaforge in geneva, @grischoun 🙂

mpenet 2020-12-14T09:36:43.055Z

so not datomic, but datahike

sam 2020-12-14T09:39:25.055500Z

@mpenet interesting, you saw datahike use in production?

sam 2020-12-14T09:39:52.056400Z

@mpenet @neo2551 btw, where do you work currently?

mpenet 2020-12-14T09:40:15.057Z

They mentioned to me they have production uses. One of which is a project for the Swedish gov

sam 2020-12-14T09:40:40.057600Z

Wow, not bad

mpenet 2020-12-14T09:40:44.057800Z

I live close to Malmö atm, Sweden

sam 2020-12-14T09:42:40.059200Z

Ah ok! That’s a country I still need to visit 🙂 I nearly went to Linköping for an exchange year, but life came in the way.

mpenet 2020-12-14T09:43:07.059600Z

I don't really like it here.

mpenet 2020-12-14T09:43:16.060100Z

we're planning to move back to ch or germany

sam 2020-12-14T09:43:25.060400Z

too cold?

mpenet 2020-12-14T09:43:46.060900Z

no, other reasons. The weather is not great but it's not the worst of it

mpenet 2020-12-14T09:44:44.061800Z

We just don't want to remain here for too long, we have small children and we want them to grow up somewhere else

sam 2020-12-14T09:46:08.063200Z

Ah! Yes, that is always a source of big questions being asked. My kids are also a major reason I am currently living here.

2020-12-14T09:46:38.063900Z

I am working at Vontobel

2020-12-14T09:46:43.064200Z

@sam

2020-12-14T09:47:04.065Z

Yeah, this is also a reason why I am reluctant to move as well. Education is great in CH.

sam 2020-12-14T09:47:13.065500Z

Not that the education system is the best, but when I combine all factors, it is hard to find a better place for a family than where I am..

sam 2020-12-14T09:47:26.066100Z

Yes, it is good! Just not the best 🙂

2020-12-14T09:47:31.066200Z

I am also heistating between crux and datahike.

2020-12-14T09:47:39.066500Z

Where do you think education is better?

sam 2020-12-14T09:47:52.067Z

@neo2551 Vontobel is doing Clojure?

mpenet 2020-12-14T09:47:56.067200Z

ch is a great place wrt to education

2020-12-14T09:48:01.067400Z

EPFL was a fun right?

2020-12-14T09:48:07.067900Z

I do remember Satelite time

sam 2020-12-14T09:48:13.068200Z

I think the higher education is incredible here, yes!

sam 2020-12-14T09:48:22.068500Z

Totally, many hours spend there 😄

sam 2020-12-14T09:48:43.069400Z

Basic education is however a bit rooted in the past.

sam 2020-12-14T09:49:05.070300Z

It depends a lot on the school, and we are fairly happy with the school now.

2020-12-14T09:49:18.070800Z

Yes I agree, but I believe that parents have also a big role in education as well, at least in CH I had this feeling.

sam 2020-12-14T09:50:28.074100Z

Absolutely. I think there is a mentality of heavy guidance, and not as much free learning as modern pedagogy seems to advise. But this is arguing at a quite high level.

2020-12-14T09:51:51.076Z

So to answer the Clojure question: basically, I am a mathematician doing AI/ML/Statistics for finance. I was frustrated with our tools, so I started to build small webapps with python dash/R shiny, and my big boss asked me to make client facing quality web apps, so I told them to it was impossible with his short term deadline to use traditional tools, and he should make the bet to let me use whatever I wanted. I already knew Clojure, so doing ClojureScript was blessing for me 🙂

2020-12-14T09:52:46.077100Z

Since then, we destroyed most metrics of effectiveness / costs, so I can still use ClojureScript and now they want me to build the Kafka infra for our team, so I am still going to do it with Clojure.

2020-12-14T09:53:09.077600Z

It is so much faster to learn JVM tools with Clojure.

sam 2020-12-14T09:53:16.077700Z

Wow, very cool!

2020-12-14T09:54:37.079600Z

Thanks, but nothing crazy.

2020-12-14T09:54:47.080100Z

Just leverage on all the knowledge and kindness of our community.

2020-12-14T09:55:17.080800Z

The trick is our requirements are fairly small compared to real world constraints.

2020-12-14T09:55:56.082100Z

My audience will use a chrome based browser, they will have decent computers, they will probably be in Switzerland or sufficiently near.

sam 2020-12-14T09:56:07.082400Z

Yes but still, congrats on the success of bringing in that degree of innovation to an enterprise env. I have heard a couple of stories that ended differently in that regard.

2020-12-14T09:56:09.082600Z

And in banks, anything bigger than an Excel is big data.

sam 2020-12-14T09:56:21.082900Z

True 😄

mpenet 2020-12-14T09:57:26.084900Z

yeah about edu, sweden is full of montessori/waldorf, but they just use the name, it's rare to have teachers with actual education/certificates in these

2020-12-14T09:57:37.085300Z

I think I embraced talk from Rich for the 10 years of Clojure: I focused all the arguments on the artefacts and not the constructs: is what I am doing working for the definition of my boss? Can I change? Modify? Debug? Yes to all of this and at crazy speed.

2020-12-14T09:57:57.086100Z

Nothing, absolutely nothing can beat live reloading while maintaing the state of your app in UI.

mpenet 2020-12-14T10:00:13.087500Z

I am sold on attributes at the bottom, datomic, spec & all, took me a while to accept/understand it but I really think he's onto something. I wish we could use datomic at work, but licensing makes it a bit tricky atm

2020-12-14T10:00:45.088Z

Maybe you try datomic free?

mpenet 2020-12-14T10:00:53.088300Z

datahike is still young, and there's always the hope that datomic on-prem gets an open-source version at some point

sam 2020-12-14T10:01:01.088500Z

Especially when you got a lot of that state. @mpenet re education, if you want actual montessory/waldorf you need a private school here, but the ones I heard about are really good. There are a lot of private Steiner schools, which are less expensive.

2020-12-14T10:01:11.088700Z

My biggest problem with Datomic is I fear I would max out the the size for table for on prem.

mpenet 2020-12-14T10:01:27.089300Z

sam: it's free in sweden, my daughter is in a montessori preschool

sam 2020-12-14T10:01:41.089800Z

Yes, that is not available here!

mpenet 2020-12-14T10:01:43.089900Z

in ch it would be a montain of money

mpenet 2020-12-14T10:01:54.090200Z

but quality would be much better for sure too

mpenet 2020-12-14T10:02:32.090800Z

@neo2551 yes, I think with datomic you have to think very early how to shard data(bases) efficiently

mpenet 2020-12-14T10:02:55.091300Z

I guess it depends on the volumes and uses cases too

mpenet 2020-12-14T10:04:29.093400Z

but for instance nubank have multiple db per user

2020-12-14T10:04:43.094200Z

The problem could be (IMHO) circumvented if we could have separated databases on single machine and not loosing too much time when creating the indices.

mpenet 2020-12-14T10:04:45.094400Z

since you can query cross-db that's also ok'ish

2020-12-14T10:04:58.094800Z

yes, exactly.

2020-12-14T10:05:14.095200Z

but then Datomic does not recommend to have multiple DB per transactor...

sam 2020-12-14T10:05:21.095500Z

Datomic is even harder to push for in enterprise envs than Clojure in my experience. Customers often have pretty orthodox but strong opinions about their data.

2020-12-14T10:05:45.096700Z

I argue that the data is stored in Postgres or Kafka

2020-12-14T10:06:02.097600Z

(then I use Datahike or Crux haha)

mpenet 2020-12-14T10:06:11.097800Z

crux doesn't scale right now

mpenet 2020-12-14T10:06:17.098Z

all your data has to fit on every node

2020-12-14T10:06:22.098300Z

really?

mpenet 2020-12-14T10:06:29.098800Z

you get replication sure, but no way to scale out for now

2020-12-14T10:06:31.098900Z

I thought they solved it with SQL stored

mpenet 2020-12-14T10:06:34.099100Z

no

mpenet 2020-12-14T10:06:41.099300Z

not as far as I know

2020-12-14T10:07:04.100400Z

What about S3 data store?

sam 2020-12-14T10:07:08.100700Z

I gotta head back into my code, was good talking @neo2551@mpenet! 👋

mpenet 2020-12-14T10:07:10.100800Z

dunno about this

2020-12-14T10:07:19.101100Z

@sam Thanks to you! See you again.

sam 2020-12-14T10:07:43.101600Z

See you!

2020-12-14T10:07:58.102Z

@mpenet https://opencrux.com/reference/20.09-1.12.1/kafka.html They say you can use S3 for the document store. So I guess it does scale?

2020-12-14T10:08:27.102300Z

I might be wrong though, I am still wondering what is the best solution.

mpenet 2020-12-14T10:08:56.102600Z

indices have to be stored in lmdb or rocksdb

mpenet 2020-12-14T10:09:07.102900Z

and iirc these need to be on every node

2020-12-14T10:09:16.103200Z

ok make sense.

mpenet 2020-12-14T10:09:29.103600Z

and indices are big

2020-12-14T10:09:31.103800Z

yes true.

2020-12-14T10:09:50.104200Z

Did you check Datomic Cloud then? Does it solve that problem?

mpenet 2020-12-14T10:09:52.104400Z

personally I prefer the design of datomic/datahike

mpenet 2020-12-14T10:10:03.104800Z

too expensive, not open enough 🙂

2020-12-14T10:10:07.105Z

haha agreed.

2020-12-14T10:10:17.105500Z

I can't even try it at work 😞

mpenet 2020-12-14T10:11:04.106500Z

datahike is promissing, we ll see

2020-12-14T10:11:26.107Z

yep. On the other hand at 5k per year per transoactor (less if you don't update them)

2020-12-14T10:11:33.107200Z

I think it could still be acceptable.

mpenet 2020-12-14T10:12:01.107500Z

not always

mpenet 2020-12-14T10:13:03.108500Z

I work for a cloud provider: they wouldn't agree to pay to have something hosted on aws, plus there's the question of data protection given it's an US entity

2020-12-14T10:13:19.108800Z

I was thinking of Datomic on Prem

2020-12-14T10:13:20.109100Z

sorry

mpenet 2020-12-14T10:13:43.109600Z

sure, I guess we could, but it's not in my hands 🙂

grischoun 2020-12-14T12:34:36.112400Z

Hi @mpenet, hi guys! Good to hear from swiss clojurers. As @mpenet mentioned, i live in Geneva and work with lambdaforge.

2020-12-14T12:39:23.112800Z

So cool! So you are from the team that works on datahike?

alpox 2020-12-14T12:52:21.115300Z

Hi all! Its nice to see some activity in here. Im from close to Winterthur and working for a Startup in Zürich. Im interested in Clojure but sadly didnt find an opportunity to work with it as of yet. Its good to hear that there are some companies in Switzerland using it!

refset 2020-12-14T19:06:14.115600Z

Hi @mpenet 🙂 so when you say "scale" here I assume you only mean "unpredictable horizontal scaling of queries"? Otherwise I have to disagree that Crux does not scale when compared to ~similar alternatives. I think there are many dimensions of scaling other than "unpredictable horizontal scaling of queries" where Crux is arguably very scalable (compared with the mentioned alternatives). For instance: • sustained write throughput (vs. writing to distributed indexes which are inevitably slow) • total index size (RocksDB is very happy handling 10s of TBs and queries remain fast without the need for gigantic in-memory caches) • snapshot-based scaling avoids many cold-cache issues • handling of large unstructured maps (tested with 10-100 MBs) ^ a benchmark report will be published in Q1 to put all this in context. To mitigate the local-index requirement we have added a snapshotting feature that allows new nodes to come online and sync quickly (i.e. they only have to replay the recent transactions since the last snapshot). Large values are never stored in the indexes. And to further mitigate the main concern of index duplication, I have proven the concept of using Redis as a shared index store which can in principle support ~infinite nodes running in Lambdas. Such a Lamdba-based setup is only viable with Crux because the query engine is lazy and therefore has low memory requirements (i.e. it doesn't compute the clauses/joins one-at-a-time, which is a memory-intensive approach): https://github.com/crux-labs/crux-redis (the main trade-off is that queries will be a little slower due to network hops)

refset 2020-12-14T19:09:00.115900Z

Hi @neo2551 I wrote a response to the earlier comment that you may want to skim 🙂 https://clojurians.slack.com/archives/C08QBF7B5/p1607972774115600?thread_ts=1607940371.097800&cid=C08QBF7B5

mpenet 2020-12-14T19:10:39.116200Z

the statement was a bit too broad sure. I meant size of full dataset/index. Sure you can have boxes with 10tb and put your index on them, but that's not very convenient for a few reasons (costs, operational among others) and you'll still be bound by limits in storage size per box.

mpenet 2020-12-14T19:11:15.116400Z

but my crux knowledge is quite outdated, so maybe I missing the big picture

mpenet 2020-12-14T19:12:15.116600Z

write throughput surely is fast, I guess it's essentially benchmarking kafka, write/read roundtrip is probably a different story, even then I expect it's fast enough in most cases

mpenet 2020-12-14T19:13:16.116800Z

but the one reason I am not considering/using crux right now is because of the sharding issue, it feels like a pain point for long running clusters

mpenet 2020-12-14T19:14:21.117Z

about redis: interesting POC, tho redis is also problematic in its own ways, it's also one more dependency to manage/operate

mpenet 2020-12-14T19:16:54.117200Z

the "doesn't scale" was only for the index issue. Another problem with that would be that spreading write load on indexes is not possible, If you have a lot of writes, surely kafka will keep up but all your nodes will also be busy writing index data. And in turn that would impact querying on all these nodes.

mpenet 2020-12-14T19:18:49.117400Z

crux is way more mature than some of the other solutions I mentioned tho, both in tooling and the dev behind it, major props on that. I prefer the datomic design personally, but that's also a matter of different use cases.

mpenet 2020-12-14T19:23:17.117900Z

@taylor.jeremydavid I am actually wondering if you are working on sharding/partitioning at all, other than via redis?

mpenet 2020-12-14T19:23:54.118100Z

it's a tough nut to crack but there are plenty existing solutions to get inspiration from

refset 2020-12-14T19:50:16.118400Z

Thanks for the responses! It's certainly a subtle and complex discussion. We have it on our backlog to try Crux out with this "cloud-native" fork of RocksDB (by the Rockset team of ex-RocksDB Facebookers): https://github.com/rockset/rocksdb-cloud this is an insightful post https://rockset.com/blog/remote-compactions-in-rocksdb-cloud/ there are a few presentations on it also. Clearly Rockset are using this fork heavily themselves in their cloud offering and I think it would be a good bet for us, if it works like we think it will. This would go a very long way to solving all the issues you mention without needing to change the nature of the sorted-kv index structure of Crux itself. > Sure you can have boxes with 10tb and put your index on them, but that's not very convenient for a few reasons (costs, operational among others) and you'll still be bound by limits in storage size per box. Cost is definitely an important dimension for analysis and critique, and I believe was the biggest motivator for Rockset's fork. I think if "limits in storage size per box" are truly an issue then Crux is probably not the right fit for the problem at hand (e.g. EBS volumes go up to 16TB, and i3en has 60TB of local SSD). > I am actually wondering if you are working on sharding/partitioning at all We are certainly thinking about it often. Did you see Håkan's short segment about the roadmap in our Re:Clojure video? https://youtu.be/JkZfQZGLPTA?t=1325

mpenet 2020-12-14T19:59:13.118800Z

Interesting. No I didn't have the time to watch the videos yet and I missed part of the qa when it was live

👍 1