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/
flowthing 2021-03-23T06:21:21.162100Z

Yeah, overspecification is a real danger. In one of the projects I work on, almost everything is speced, and it's a real pain in the ass.

🙂 1
emil0r 2021-03-23T08:56:24.162800Z

So the total Clojure code base is roughly around 65k LOC?

emil0r 2021-03-23T08:56:41.163Z

That’s pretty impressive as well

gklijs 2021-03-23T09:03:31.165200Z

There is a lot in Java already to build upon. There is a sweet spot for a language, being small enough to be stable, but not so small you need a lot of additional libraries for it to be practical. Clojure seems to do this well.

vlaaad 2021-03-23T12:46:23.169500Z

I would be interested to see Rich Hickey’s take on designing cloud services 😬 Currently learning GCP at work, it’s so much stuff, I wonder how much of cloud’s complexity is incidental

mpenet 2021-03-23T12:48:50.170900Z

well, there are so many sub-services that must interop inside a cloud platform, complexity grows organically. That gets even worse when you want to respect backward compatibility (and you do want that)

phoenixjj 2021-03-23T12:57:39.172900Z

when cloud services talk about lambda/functions, I just feel that they took Erlang and put fancy UI on top of it. In erlang you can replace a module without shutting down whole app. I wish Clojure come up such feature.

vlaaad 2021-03-23T13:08:31.173600Z

@phoenixai2082 you mean reloading namespace? as in (require ... :reload-all) ?

emccue 2021-03-23T13:08:53.174Z

I wonder how much of cloud’s complexity is intentional

emccue 2021-03-23T13:09:29.174700Z

causing vendor lock in is too lucrative to not be a major goal

☝️ 1
4
2021-03-23T13:20:16.174800Z

There are some thoughts on cloud in Rich's talk on datomic ions: https://github.com/matthiasn/talk-transcripts/blob/master/Hickey_Rich/DatomicIons.md

Timur Latypoff 2021-03-23T13:26:38.175800Z

Yeah, I feel like Clojure's hot code reload it at least on par with Erlang.

Timur Latypoff 2021-03-23T13:27:06.176300Z

But by itself hot code reload is not used much, even in Erlang. Much simpler to just restart the whole app.

mpenet 2021-03-23T13:28:07.176700Z

@phoenixai2082 actually some of the tools used by aws & co for this is oss

mpenet 2021-03-23T13:28:10.176900Z

like firecracker

mpenet 2021-03-23T13:28:54.177200Z

https://github.com/firecracker-microvm/firecracker

👍 1
phoenixjj 2021-03-23T13:29:55.177400Z

that is something we do in repl. usually apps are packaged as jar/war. but in erlang a single file (module) can be reloaded in production

mpenet 2021-03-23T13:30:55.178600Z

basically you create a vm profile for your "function", with all it's deps, start the service, snapshot it and when invoked you just run from the snapshoted state

phoenixjj 2021-03-23T13:30:58.178700Z

I didn't knew it existed. thanks.

mpenet 2021-03-23T13:31:30.179300Z

it's a very nice project

orestis 2021-03-23T14:21:54.182Z

Erlang hot-core reload is actually much worse than Clojure, because you can't really do it in a dev environment AFAIK – you need a proper OTP release and writing migration handlers for existing state etc, so I think hardly anyone uses it "just because it's there". For hardcore Erlang users it's a great option for deployment though.

2021-03-23T14:28:07.182700Z

Working on a project at work where we have a number of js file that are named like foo.12.0.0.js, bar.27.0.0.js etc and each time you change you these files you have to bump the version number...

2021-03-23T14:28:12.182900Z

IT's so ridiculous.

2021-03-23T14:28:41.183300Z

And then of course update all the files that reference those js files to reference the new file names.

🤯 2
wombawomba 2021-03-23T15:48:06.185100Z

Looking for recommendations on libraries for building documentation and blog pages. Preferably something I can integrate with Reagent!

2021-03-23T16:08:17.185300Z

https://clojureverse.org/t/what-is-your-favourite-way-to-document-your-programs/7353 this recent thread on clojureverse discusses a lot of options for docs

wombawomba 2021-03-23T16:20:56.185600Z

@jjttjj thanks! That thread seems more focused on code/API docs, and I'm really looking to build product documentation — something like https://clojure.org/guides/getting_started

wombawomba 2021-03-23T16:22:28.185800Z

I started using https://www.mkdocs.org/, but I'm not a fan because 1. it introduces a non-Clojure project to our stack, and 2. it's hard to integrate cleanly with our public-facing SPA (Reagent) website

phoenixjj 2021-03-23T16:55:05.186400Z

git/subversion exist for this purpose. are you guys not using it?

2021-03-23T16:58:24.186600Z

He says it's because the browsers at the sites won't pick up changes to the js unless the file name changes and users won't see changes after deploy without a hard refresh.

2021-03-23T16:59:00.186800Z

But there has to be a better way!

phoenixjj 2021-03-23T17:14:34.187300Z

set this for JS file

phoenixjj 2021-03-23T17:15:22.187500Z

In HTTP 1.0 days we used to append timestamp or version number to js url in query string

phoenixjj 2021-03-23T17:16:45.187700Z

but now you use cache-control

2021-03-23T17:20:50.188Z

Thank-you ill look into that!

2021-03-23T19:03:34.188200Z

clojure provides a repl in clojure.main, you can load new definitions in your process if your ops flow is OK with it

2021-03-23T19:04:19.188400Z

I've done it in the distant past, but in recent jobs we decided reproducibility (strict mapping from identifiable artifact to code) was more important so haven't used the feature

borkdude 2021-03-23T20:57:47.190600Z

Looking for examples of Clojure projects that use Makefile or something similar to list tasks that are commonly invoked. You may reply in a thread.

lread 2021-03-24T10:48:13.202100Z

Not sure if this helps, but antq uses a https://github.com/liquidz/antq/blob/main/Makefile

borkdude 2021-03-24T10:51:04.202400Z

Thanks. a Makefile with almost all tasks "phony", same as clojure-lsp: this is what I see a lot

flowthing 2021-03-24T11:07:33.205100Z

Can you be more specific about what you're looking for? I use Just for one of my work projects and I've been quite happy with it.

borkdude 2021-03-24T11:09:11.205300Z

@flowthing I am building a task runner within babashka so I want to know what people are using these days: https://github.com/babashka/babashka/issues/756

flowthing 2021-03-24T11:09:18.205600Z

flowthing 2021-03-24T11:09:36.205900Z

OK. The project is private, but I copy-pasted the Justfile above.

borkdude 2021-03-24T11:10:39.206100Z

Thanks. So this confirms my hypothesis that deps.edn invites to using tools like make or just because nobody can remember all these invocations from the top of their head

flowthing 2021-03-24T11:10:51.206300Z

Certainly.

flowthing 2021-03-24T11:11:43.206600Z

I just remembered I use a Makefile for Sigel: https://github.com/eerohele/sigel/blob/master/Makefile But it's the same story as with the other ones: just phony tasks.

flowthing 2021-03-24T11:13:29.207Z

A Makefile equivalent is also useful in CI: if the command for one of the tasks gets updated, it's enough to just update it in one place.

borkdude 2021-03-24T11:14:26.207200Z

Exactly. So with bb's task runner, this would become:

bb :fix-fmt 
bb :bump-deps
bb :clean:test
etc.

👍 1
1
2021-03-23T21:00:02.190700Z

I don't claim this is an example worth following, but it is small, simple, and easily modified: core.rrb-vector has one small bash script for tasks on JVM https://github.com/clojure/core.rrb-vector/blob/master/script/jdo and another for similar corresponding tasks with JavaScript: https://github.com/clojure/core.rrb-vector/blob/master/script/sdo

👍 1
2021-03-23T23:05:37.192700Z

Anyone know android phones? I'm having a strange problem with my phone and my headphones. When the headphones are plugged in and their is music playing and the headphones jiggle a little in the headphone jack the music pauses and the lady in my phone tells me the time. I have no idea what is going on or why it's doing this. I assume the headphone jack is slightly damaged over time but how this translates to telling me the time, I can't fathom.

sova-soars-the-sora 2021-03-26T19:59:40.310300Z

try cleaning out the headphone port?

2021-03-23T23:06:13.193200Z

The headphones dont even have buttons or anything on them

2021-03-23T23:06:20.193500Z

the headphone port can register certain connections between pins as button press events

2021-03-23T23:06:53.194200Z

the jiggle of a plug in a broken port can create spurious connections between pins

2021-03-23T23:07:23.194700Z

oh no. SOunds like it might mean a new phone...

walterl 2021-03-23T23:08:33.194800Z

> the lady in my phone There's your problem :troll:

1
2021-03-23T23:09:57.196300Z

speaking of "the lady in my phone" my galaxy note 9 has a dedicated "bixby button" and in the current OS there's no way to reassign or disable the button, so I have a dedicated physical switch on the device whose purpose is to make an annoying assistant that I never want to use wake up and talk to me

2021-03-23T23:11:17.197300Z

I had some stupid Google assistant thing on my TV. I was watching an episode of Joe Rogan and his guests said something like "Ok, Google is blah bnlah", it stopped the episode and was waiting on voice input... Dumb!

2021-03-23T23:11:46.197700Z

haha

2021-03-23T23:11:56.197900Z

But I guess people are using these voice assistants. I jsut feel a bit daft talking to my phone / tablet / tv

seancorfield 2021-03-23T23:15:17.199100Z

My Android phone often wakes up and asks if it can help, while we are just watching TV. I haven’t managed to train Google to only respond to my voice 😐

2021-03-23T23:15:29.199600Z

I don't care if it's a voice assistant or "push button to make a fart sound" - I don't like intrusive features that can't be turned off