Fork me on GitHub
#beginners
<
2022-05-29
>
Evgeniy02:05:13

What are some industry standards/common ways to develop for mobile using Clojure/ClojureScript? I looked into a few GitHub repos and all of them seem to not be actively developed anymore.

seancorfield03:05:40

I think the most "popular" approach these days is #clojurescript targeting #react-native these days? I don't do cljs/mobile myself but maybe ask in those channels. I gather Clojure for Android is pretty much a dead end due to performance.

danieroux08:05:53

There's the very new #clojuredart. For React Native, there's https://github.com/vouch-opensource/krell

Evgeniy23:05:41

Thank you!

clj.max03:05:32

I think I want to do something like reverse zipmap. I have a collection of maps like {:name "abc" :value 123} and want to convert them into {:names ["abc" ..] :values [123 ..]} for a chart library. Is there an easy way to do this?

😅 1
duckie 1
clj.max03:05:53

Oh wait I guess I could just map through it twice?

clj.max03:05:15

Yea that works. Nvm. 😅

delaguardo09:05:58

Or use reduse to walk through the keys just once.

Miloš Tepić15:05:51

I’m coming from Scala ecosystem and there are too many future types (Future, Monix Task, ZIO, Cats Effects,…) and I see that Clojure has (future & body) so I’m wondering do standard Clojure projects rely just on this or are there libraries which implement async programming?

dharrigan15:05:21

Clojure has quite a few built-in constructs for async programming, channels being one of them (future, promise and so on being the others)

dharrigan15:05:36

I know a popular library for async programming to is

dharrigan15:05:03

Another might be

respatialized15:05:41

In a channel like #beginners, I would recommend core.async and its documentation before any of the less conventional async libraries: https://clojuredocs.org/clojure.core.async https://www.braveclojure.com/core-async/

Miloš Tepić19:05:16

Thank you guys @U11EL3P9U are manifold and missionary libraries industrial standard?

dharrigan20:05:50

Manifold is quite ubiquitous, it's used quite widely. I can't vouch for missionary in terms of uptake. Maybe others might know 🙂

🙌 1
sr16:05:29

I feel like I'm failing an intelligence test in asking how to get the Calva & Clojure REPL working in VSCode, but I've been messing up for hours and I had originally thought I would be on to learning Clojure after 5 minutes. Help would be appreciated.

eighttrigrams16:05:49

What is the problem? Or what did you try?

dorab16:05:59

Which OS are you using? Maybe you can let us know where you're at and what is not working for you. If you haven't already, take a look at https://calva.io/getting-started/

sr16:05:37

I last did real programming around 1991 with vi and c on UNIX & MSDOS. I have virtually no IDE experience. I am on a Mac. At this point I have VSCode up, java, leiningen working from the command line. I have installed Calva and intellisense is finally working (when I use the .clj extension). When I try to run something as simple as (+ 1 2) inside VSCode, nothing happens. Actually that is not correct. I get the message that no debugger is installed...do I want to install one. Given that is supposed to be part of Calva, I figure that is not a good sign. I also can't get the Calva "jack in" to work. The video on the http://calva.io site shows the teacher clicking at the top of his screen and selecting that startup procedure, but I don't see anything similar.

eighttrigrams16:05:59

Do you have this thing on the bottom of the window?

eighttrigrams16:05:05

When you click on REPL, does Fire up the "Getting Started" REPL work?

sr16:05:48

Ah...wait a second. Ctrl-Alt-C; Ctrl-Alt-J now says "please select a project type". No explanation what the choices mean but "Babashka, nbb, joyride" are the choices. So I guess I will go with the first one since "joyride" tries to install another extension. More than half of my problems are clearly that I don't know VSCode at all; there isn't really a startup path on the http://calva.io site for that level of newbie! Ok, I was hopeful but selecting Babashka I get "bb --nrepl-server 62816 /bin/sh: bb: command not found Jack-in process exited. Status: 127"

dorab16:05:50

If you have homebrew (https://brew.sh) installed on your Mac, then brew install borkdude/brew/babashka should install babashka. However, for now, I'd recommend just using Clojure and not babashka.

sr17:05:54

thank you for that homebrew tip. I am working on that now. My MacOS is 10.14 Mojave, since the next upgrade breaks all 32 bit apps, and I have a few. Not sure if the brew worked yet, but I am looking at that. At the end of the day I just want an REPL for clojure. I have a REPL for bash right now, I guess ;-/. Is there a simple way to tell VSCode to use the clojure I installed in /usr/local/bin? There is SO much complexity in VSCode which will doubtless be wonderful once I get my bearings. But for someone who time travelled from 1991, this is kind of overwhelming!

alpox17:05:39

The simplest way I know of is creating a deps.edn file in the root of your project/folder with the content {:paths ["src"]} , then create an src folder with any clojure source file in it. When you then want to jack-in with calva you get some additional choices - one is deps.edn - choose that one to startup a normal clojure REPL with deps.edn as its configuration.

Alex Miller (Clojure team)17:05:02

you don't need the :paths there, just {} is a sufficient deps.edn

alpox17:05:18

Oh, even simpler, good to know!

Alex Miller (Clojure team)17:05:42

(it includes :paths ["src"] and Clojure as a dependency by default)

sr17:05:40

I'll try the deps.edn thing in a little bit if I can't find out where the babashka output went. You guys are really great. If I can just get over these starting pains I expect I am going to enjoy this learning.

sr17:05:23

Thanks EVERYONE for help and patience. babashka jack in done, per: "; Starting Jack-in Terminal: bb --nrepl-server 62907 ; Hooking up nREPL sessions... ; Connected session: clj ; TIPS: ; - You can edit the contents here. Use it as a REPL if you like. ; - alt+enter evaluates the current top level form. ; - ctrl+enter evaluates the current form. ; - alt+up and alt+down traverse up and down the REPL command history ; when the cursor is after the last contents at the prompt ; - Clojure lines in stack traces are peekable and clickable. clj꞉user꞉> ; Use alt+enter to evaluate ; Jack-in done. clj꞉user꞉>". BUT I don't see anything showing up on I try running (+1 2) from window where I did wrote the snippet and clicked run/debug. Nothing in output nor terminal window. But nothing in problem window, either.

alpox17:05:18

Try putting your cursor somewhere on the (+ 1 2) form and press Alt-Enter

dorab17:05:30

Great that you have babashka running. If you want to start with just a Clojure REPL, without any IDE, and you have installed the Clojure CLI, then try clj at the shell prompt and see if you get a REPL. If so, you should be able to type in (+ 1 2) and see the result. If you haven't installed the Clojure CLI, then install it via brew as brew install clojure/tools/clojure. Once you have that working, you can try out VSCode and Calva.

andy.fingerhut17:05:40

You may ask here, but I also wanted to mention there is a #calva channel in this Slack community that you might want to ask in, if your questions are specific to VSCode+Calva

alpox17:05:25

Also worth mentioning: There is the evaluation-guide and getting-started repl. See https://calva.io/eval-tips/

sr17:05:41

Yeah!!!!! It worked!!! You guys are great! alt-ENTER works!

👏 3
sr17:05:48

I have a few clojure books from maybe 5 years ago, when I first intended to play with the language. Any suggestion for a really step by step tutorial which doesn't dwell too long on the "hello world" level? I would live to find a "learn clojure by building [game/website/etc]" type tutorial so I am led substantially step by step but know I am building toward something which will not be totally trivial.

dorab17:05:57

I would recommend starting out by trying out several small examples at the REPL and getting familiar with Clojure and the REPL. Then look at some basic libraries. Before you dive into something like a web app. Some resources that might be of help: https://clojure.org/community/resources https://practical.li/ https://github.com/seancorfield/usermanager-example

eighttrigrams17:05:57

Wrote that here. It contains stuff which I think, given my personal approach and thinking style, would have helped me getting started with less friction at the beginning. May be of some help https://eighttrigrams.net/article/clojure-tutorial

👀 1
👍 1
sr18:05:28

That 8-Trigrams looks really helpful! Seems like the right approach for me...start simple but accelerate to usefulness fast. That motivates me.

👍 1
eighttrigrams18:05:19

Glad to hear that

Robert Bell01:05:29

That filled in some gaps for me....thank you, Dan!

👍 1
sr18:05:14

Once again, I want to thank everyone that chipped in to get me past this sticking point. I think I have everything I need now to start “backfilling” the large amount I don't know, from VS Code through Clojure & associated tools. I don't have the patience, and remaining lifespan, I had 30 years ago. So when just installing or sampling something becomes too onerous, I tend to move on. In this case, thanks to the generous and timely help I got, I expect to be sticking around. I'd always read great things about both Clojure and the Clojure community. Now I can begin to speak from firsthand knowledge! This should be much fun!

☀️ 14
❤️ 2