off-topic

https://github.com/clojurians/community-development/blob/master/Code-of-Conduct.md Clojurians Slack Community Code of Conduct. Searchable message archives are at https://clojurians-log.clojureverse.org/
roninhacker 2021-02-18T01:02:48.451200Z

Yeah, I had an extremely plebian meaning in mind ---transforming equations for math homework. LaTTe looks amazing though, thank you for linking me to it. The closest I found is a Little Java (I suspect actually clojure) App That Could on Sourceforge, the only review quite derisive. I think there's the core of something great though: https://sourceforge.net/projects/ket/

phronmophobic 2021-02-18T01:27:19.453200Z

I used to use wolfram alpha (https://www.wolframalpha.com/) for math homework in college. you just type in the math and it usually brings up any relevant derivations on its own

πŸ‘ 3
phronmophobic 2021-02-18T01:28:16.453800Z

your school may even have [free] logins/licenses

2021-02-18T15:50:00.457600Z

In documentation for java libraries, frequently a classname is mentioned but without mentioning the package or path of that class and I end up having to just google the class name or look at source code until I find a better way to import. Is there a better way?

πŸ‘€ 1
❀️ 1
πŸ‘† 1
orestis 2021-02-18T18:05:33.458700Z

I try to find the Java doc page and ctrl-f in there. It’s super annoying though.

kulminaator 2021-02-18T19:12:16.459400Z

to any people here writing stuff on Rust ... how do you keep your projects maintained and alive over time ?

kulminaator 2021-02-18T19:12:53.460200Z

i tried writing a small tool with rust for postgresql .... and the postgresql client lib pulled in 70 dependencies on it's own. bloody hell 😐

kulminaator 2021-02-18T19:13:03.460500Z

looks like npm hell all over again

kulminaator 2021-02-18T19:15:25.461600Z

sounds like i will write my tooling with clojure instead and opt for graalvm to get a binary should there be a need for one ...

borkdude 2021-02-18T19:15:32.461800Z

Take a look at https://github.com/leafclick/pgmig for a Postgresql CLI (migrations) using GraalVM :)

borkdude 2021-02-18T19:16:34.462600Z

Also you can do scripting with babashka and https://github.com/babashka/babashka-sql-pods/ should you need fast startup without compiling yourself

kulminaator 2021-02-18T19:17:00.463Z

startup time won't be an issue

kulminaator 2021-02-18T19:17:42.464100Z

the target will be to port a few terabytes of data from a postgres cluster to a yugabyte cluster and keeping active replication going after the initial data has been copied

borkdude 2021-02-18T19:17:46.464200Z

I think the thing in Rust is that they want to push as much of the language into libs so they can evolve outside of the core

borkdude 2021-02-18T19:18:21.465300Z

so you will quickly need libs for basic stuff like async, a global mutable var, etc

kulminaator 2021-02-18T19:18:29.465600Z

as for db migration tools .... amazing , yet another one that thinks that you want to manage individual migrations as changes from shape A to shape B

kulminaator 2021-02-18T19:19:06.466400Z

if you think of your database structure as just ... well structure definition, it suddenly becomes code .... we don't manage our code like we do mange our db migrations do we ?

kulminaator 2021-02-18T19:20:07.467600Z

i mean you don't change the code by creating migration_2342042042 add line (def x "fobar") into babashka.clj

kulminaator 2021-02-18T19:20:53.468200Z

first off it's impossible to read the thing even after a few migrations and it's impossible to reason about it if you have 50 migrations

kulminaator 2021-02-18T19:21:31.469Z

i know there are a ton of tools out there that maintain db structures like that, but they are all flawed by the design, nobody wants to have 800 migrations for a 6 year old project

borkdude 2021-02-18T19:21:54.469400Z

We have been using it on a 5 year old project, it works well for us. YMMV.

kulminaator 2021-02-18T19:22:20.469700Z

well you probably run less db migrations πŸ™‚

borkdude 2021-02-18T19:22:29.470Z

I will count them

kulminaator 2021-02-18T19:22:40.470300Z

because applying 800 migrations just to run your db tests .... πŸ˜•

kulminaator 2021-02-18T19:22:56.470600Z

or making any sense from the last 40 ...

borkdude 2021-02-18T19:23:01.470900Z

85

borkdude 2021-02-18T19:23:19.471500Z

we don't do tests like that. we only test against real systems :P

kulminaator 2021-02-18T19:23:22.471700Z

if you would want to compare the state from 5 months ago to current in your babashka code, you would open up git and diff

kulminaator 2021-02-18T19:23:41.472200Z

maybe individual changes sometimes too, but mostly just the big diff from now to then

kulminaator 2021-02-18T19:24:08.472700Z

but for some reason the quite fewliners db definitions are a holy grail and are treated totally differently

kulminaator 2021-02-18T19:24:49.473800Z

i have seen db management tools that work differently and treat db structure as code. feels way more native once you have touched such

borkdude 2021-02-18T19:25:18.474600Z

I guess you could write a more intelligent tool by comparing the columns etc that are already there and create those that aren't there yet, but for some reason I didn't come across that. Are you using one?

kulminaator 2021-02-18T19:25:50.475200Z

was using one back at skype. not using at the current company, i haven't found a very good open source one.

☝️ 1
kulminaator 2021-02-18T19:26:21.475900Z

some are based ontop of the complex systems like django or rails

kulminaator 2021-02-18T19:26:34.476200Z

but if you dont use django or rails they become aliens in your world πŸ™‚

kulminaator 2021-02-18T19:27:44.476900Z

i will work towards getting a tooling out of my boys to create a similar tool for rabbitmq though

kulminaator 2021-02-18T19:27:50.477100Z

because i face the same problem there

kulminaator 2021-02-18T19:28:02.477400Z

a lot of structure in the exchanges & queues & bindings

kulminaator 2021-02-18T19:28:25.478Z

and migrations from shape A to shape B are quite risky after a while

kulminaator 2021-02-18T19:28:39.478500Z

and hard to reason about

borkdude 2021-02-18T19:28:47.479Z

we're using rabbitmq as well, but not a lot of churn there

kulminaator 2021-02-18T19:28:47.479100Z

i mean civil people would like to test their stuff right πŸ™‚

kulminaator 2021-02-18T19:29:12.479600Z

and compare different stages of their changes if needed

kulminaator 2021-02-18T19:29:31.480100Z

and clean up stuff once they dont need it

borkdude 2021-02-18T19:29:52.480600Z

Maybe one reason such an open source tool doesn't exist is that it would be very db specific, while migratus works pretty much with any type of persistence thing

kulminaator 2021-02-18T19:30:14.481100Z

well both postgresql and mysql are big enough really to have their own tooling

kulminaator 2021-02-18T19:30:41.481800Z

the "works across databases" often leads to a horribly inefficient design or just a bunch of lies πŸ™‚

kulminaator 2021-02-18T19:30:55.482200Z

because a few steps onwards from the sql standard things start to differ a lot

kulminaator 2021-02-18T19:32:40.483300Z

and is quite a big overhead for development too 😞

kulminaator 2021-02-18T19:33:15.483500Z

/end of rant

borkdude 2021-02-18T19:35:06.484100Z

Btw, speaking of Rust and data replication, we are using ZomboDB, written in Rust, to sync data from our postgres to an ES cluster. Works well.

kulminaator 2021-02-18T19:36:43.484700Z

i expect most stuff written in rust to work well, the design of the language itself is very neat.

kulminaator 2021-02-18T19:38:15.486100Z

but on the perhaps unfair example from npm world, if your project starts to depend on ~100 packages then after 3-4 years a good dozen if not more of those will be unmaintained & rusting in the corner, no pun intended.

kulminaator 2021-02-18T19:39:00.486800Z

if i grab clojure & jdbc driver & graal - i have a pretty small pack of things that are maintained and kept up to date

kulminaator 2021-02-18T19:39:53.487800Z

have at least to be thankful for the tokio stack in rust, that seems to keep a big part of their world in a line

borkdude 2021-02-18T19:39:54.487900Z

agreed. the approach that zomdodb takes is that it lives inside postgresql, as an extension

kulminaator 2021-02-18T19:41:25.488600Z

regarding ES clusters .... it's interesting to see what eventually comes out from the elastic vs aws battle

kulminaator 2021-02-18T19:42:03.489Z

that turned into quite a sh*tshow πŸ˜•

orestis 2021-02-18T20:10:42.492Z

I have an always up to date ddl sql file that I run tests against, and the migrations are just some Clojure functions that I consider temporary. Not ideal and need a lot of preconditions and postconditions but I will add those when Postgres becomes a single source of truth (right now mongo is that, so Postgres is used for analytics and stuff)

dpsutton 2021-02-18T20:55:15.493500Z

Austin and Texas people in general. Hope all is going ok for you. I'm in Louisiana just down i-10. please feel free to ping me if i can help with anything at all.

πŸ‘ 1
❀️ 2
slipset 2021-02-18T21:42:00.494400Z

Hihi, mongo as the single source of truth.

πŸ’― 1
😏 1