Тёмный
Between Two Parens
Between Two Parens
Between Two Parens
Подписаться
Learn Clojure(Script) and more with Thomas!

My name is Thomas and this is a channel about my life Between Two Parens. I'm a professional Software Developer specializing in Clojure(Script) and JavaScript. On this channel we cozy up between two parens while we tutorial, walkabout code and experience this epic walk known as life through the lens of code.

I do it all because I want to give back but if your interested in supporting this channel beyond your most welcome likes, views and subs checkout my Github Sponsors page github.com/sponsors/athomasoriginal

Be sure to stay for a while and say hi!

Business Inquires- tm.mattacchione@gmail.com
Комментарии
@dera_ng
@dera_ng Месяц назад
Gold!
@zeeeeeman
@zeeeeeman Месяц назад
video starts at 0:33
@newfc12
@newfc12 3 месяца назад
Great explanations, thank you so much.
@mattgreer6972
@mattgreer6972 4 месяца назад
Thanks for the video--great stuff. I have a fair amount of Clojure knowledge but always struggle setting up a cljs project. The idea of doing the minimum and fixing it bit by bit is really helpful. Less helpful is the way the Clojure CLI tools seem to have changed every time I come back to Clojure! What worked for me was: clj -M -m cljs.main --compile app --repl instead of: clj --main cljs.main --compile app --repl and: clj -M -m cljs.main --watch src --compile app --repl instead of: clj -M cljs.main --watch --compile app --repl
@BetweenTwoParens
@BetweenTwoParens 4 месяца назад
Thanks for the post! I'll look into this and I agree that Clojure CLI tools went through a good amount of evolution since this video was initially made. A new one will be incoming. 🙏
@waltermelo1033
@waltermelo1033 7 месяцев назад
man clojure is a so interesting language. why don't there is more begginer friendly tutorials like these?! this content is gold! thanks!
@FarmBoyTech
@FarmBoyTech 8 месяцев назад
Really helpful
@yuriykochetkov
@yuriykochetkov 8 месяцев назад
Where is the video about reloadable code?
@raj.svc.google911
@raj.svc.google911 10 месяцев назад
Please provide an updated video series using the Pulsar editor for Clojure development. Pulsar is the new replacement editor for Atom.
@raretapes8057
@raretapes8057 11 месяцев назад
You're a very good teacher. Thanks
@BetweenTwoParens
@BetweenTwoParens 11 месяцев назад
Appreciate it!
@MiKo-iz7tt
@MiKo-iz7tt Год назад
It would be more useful if you can zoom in to your screen, the color of the cursor doesn't see clearly, so I could appreciate better what are you doing.
@PimpMyYugioh
@PimpMyYugioh Год назад
Very helpful!
@syedali8385
@syedali8385 Год назад
thanks bro, it was helpful, much obliged
@tyrisnolam
@tyrisnolam Год назад
I rewatch this video every time I forget how to edit hunks. Thanks a lot!
@devstefancho
@devstefancho Год назад
Great tutorial!, do you use any plugin for git diff styling?
@BetweenTwoParens
@BetweenTwoParens Год назад
Hey there! see github.com/athomasoriginal/dotfiles/blob/master/git/.gitconfig#L14
@user-df3no9qk9r
@user-df3no9qk9r Год назад
Man, WTF :D You don't have to change the "hunk header" to edit the commit, git developers aren't that stupid. Just use the syntax git uses. Don't delete context lines and everything will be fine. (In your "example of apply path error" you deleted one context line: with curly brace)
@privatename3621
@privatename3621 Год назад
Thanks for posting. How did you get your git diff to look that way? I assume you are using an alias of some sort, as normally git diffs have a much different look.
@BetweenTwoParens
@BetweenTwoParens Год назад
Hey there, see github.com/athomasoriginal/dotfiles/blob/master/git/.gitconfig#L14
@andrewlee8218
@andrewlee8218 Год назад
can you please keep our points in a tabular comparitive format in forefront & keeping your face at BACKGROUD as this is RU-vid & NOT a dating site to keep your FACE alone for whole presentation period, hope you give a better one next time thanks
@HectorVivero
@HectorVivero Год назад
You should do it and stop being so rude to content creators who are actually giving useful information. There is no such a rule that says he can't keep his face there as much as he wants.
@roteschwert
@roteschwert Год назад
I love Lisp
@David-iq1kd
@David-iq1kd Год назад
What is ink needed for? It no longer appears in the Atom search and appears abandoned.
@BetweenTwoParens
@BetweenTwoParens Год назад
Im not sure if Ink is required to use Chlorine anymore. I would recommend using Sublime 4 until Atom gets some more love from community maintainers.
@David-iq1kd
@David-iq1kd Год назад
Sad to see Atom being sunsetted. Even though it's not till Dec 2022, the site seems to barely work, and the extension download server appears to be failing
@BetweenTwoParens
@BetweenTwoParens Год назад
Indeed. Atom is no longer maintained by Github, but I believe there may be a community effort underway to revive it. Not sure of their progress. For now, I would recommend Sublime 4.
@David-iq1kd
@David-iq1kd Год назад
Fantastic thank you! Question: the initial setup outputs a message saying, "WARNING: Implicit use of clojure.main with options is deprecated, use -M instead. What is this and how would it be used correctly now?
@BetweenTwoParens
@BetweenTwoParens Год назад
Hey David! I believe there is a note addressing this in the description. Please take a look and let me know if it helps :)
@stevenrodriguez2882
@stevenrodriguez2882 Год назад
Love the video and instruction, but since there is nothing on the web page you probably don't need it to be so big. So you could have the project directory open the whole time instead of switching it every time.
@Hufsa
@Hufsa Год назад
github search is magic, awesome, thank you so much for this brief video that helps a lot
@nonefvnfvnjnjnjevjenjvonej3384
Why did you stop uploading my man. I miss your videos.
@BetweenTwoParens
@BetweenTwoParens Год назад
Life got busy, but I haven't abandoned the channel.
@nonefvnfvnjnjnjevjenjvonej3384
Thank you so much for doing this. It is crazy that Clojure / Clojurescript is so powerful but the onboarding is so poor. A bunch of videos like this really help out those who are interested.
@BetweenTwoParens
@BetweenTwoParens Год назад
Appreciate it and I agree!
@rostranj2504
@rostranj2504 2 года назад
what is the difference btwn shadow-cljs and cljsjs?
@BetweenTwoParens
@BetweenTwoParens Год назад
Hey! Those two things are different tools. It's like comparing a hammer to a shovel. Very different purposes 😄 - shadow-cljs and figwheel-main provide tooling to enhance the development experience (HMR, Live CSS Reload etc) - cljsjs - this is a technique to package JS libraries so they can be used in Clojure land. This technique is not really used on project anymore because ClojureScript now has strong support for consuming NPM libraries "directly" now. Let me know if this helps!
@AdityaSharma-ff7st
@AdityaSharma-ff7st 2 года назад
To the point and precise! Thanks
@loicblanchard2044
@loicblanchard2044 2 года назад
Hi, is webpack necessary? I did not use npm deps in my clojure reagent website and I have the same config as you except the webpack option in the prod config. On my host Netlify, it does not seem to find my scripts for some reasons while locally everything is working fine. So I was wondering if figwheel can actually work without the webpack bundle and so npm? Thank you.
@BetweenTwoParens
@BetweenTwoParens 2 года назад
Hey there! If you are using figwheel-main and want to use npm packages in the modern approach in your CLJS project than you will need to have :auto-bundle :webpack set in your build config file and use webpack. There is no way around that.
@loicblanchard2044
@loicblanchard2044 2 года назад
@@BetweenTwoParens Thank you for your reply. Actually, I don't want to use npm in my project. (No need for a simple website imo). Without webpack, it actually creates a `prod.main.js` in `public/cljs-out` but this should be picked up by Netlify. However, I have the good old error with the js file filled with html (the js src path is correct in index.html) On the figwheel website, the owner shows how to use webpack but I was wondering if a non-npm reagent app needs it. I have no packages.json, only deps.edn. I just have `clj -A:prod` as a build command on Netlify and I am not sure if that's enough.
@kanumikechibundu2401
@kanumikechibundu2401 2 года назад
Nice content but the font is way too small. I had to strain my sight to see what you are doing . Thanks for the video though
@beaker071
@beaker071 2 года назад
I'm using your keybindings as I was not able to run "ctrl-; b" . How I press this on a mac, just for curiosity?
@BetweenTwoParens
@BetweenTwoParens 2 года назад
I configure my Mac so that Caps Lock becomes the meta key. So, for me its: Caps Lock + b. This article should get you started: www.howtogeek.com/409904/how-to-turn-your-mac’s-caps-lock-into-an-extra-modifier-key/
@joeydelmarsjr.646
@joeydelmarsjr.646 2 года назад
which JDK is best for android apk and rom system development
@kylewilliams4721
@kylewilliams4721 2 года назад
what are the extensions? What does with extension mean?
@BetweenTwoParens
@BetweenTwoParens 2 года назад
Hey Kyle, see docs.github.com/en/search-github/searching-on-github/searching-code#search-by-file-extension for the official docs. TL;DR -- extensions tells Github search that you only want to search within files ending in ".cljs". In other words: only look for my term inside of ClojureScript files. You can change the extension to whichever language you're working in. Example: if you want to only search Python, update the extension to be "py". I hope this helps!
@kylewilliams4721
@kylewilliams4721 2 года назад
@@BetweenTwoParens oh, file extensions. gotcha, makes perfect sense! Thanks!
@diegonayalazo
@diegonayalazo 2 года назад
Thanks
@diegonayalazo
@diegonayalazo 2 года назад
Thanks
@BooleanOperator
@BooleanOperator 2 года назад
I appreciate your detailed explanation, but I cannon see your cursor when you are indicating line 37 6:50
@raym6415
@raym6415 2 года назад
I am going to thumb down your video for your font size. The reason I am here is that I want to see something happening, otherwise I am fully capable of reading the instructions online myself. Redo your video please. Also, you should teach this tool while you install two java versions.
@taoufikdachraoui1181
@taoufikdachraoui1181 2 года назад
Hi thanks for your tutorials they are great. How to setup a hello world reagent cljs without figwheel-main; I found the main.js is created in out directory and that the index.html must be in REPL directory and not in resources/public; thank you again for your help.
@mordecaipaul5046
@mordecaipaul5046 2 года назад
Mad sh*t
@edwardciafardini
@edwardciafardini 2 года назад
come back!
@BetweenTwoParens
@BetweenTwoParens 2 года назад
😀🙏🏻
@ericchua3492
@ericchua3492 2 года назад
I tried as per your video at 9.45 change from "Hello, sailor" -> "Hello, sailoremoon" in app.cljs, refresh doesn't show the latest. clj --main cljs.main --watch src --compile app --repl rlwrap: warning: could not set locale warnings can be silenced by the --no-warnings (-n) option WARNING: Implicit use of clojure.main with options is deprecated, use -M WARNING: app is a single segment namespace at line 1 /Users/eric/Desktop/hello-world/src/app.cljs ClojureScript 1.10.866 cljs.user=> Watch compilation log available at: out/watch.log my chrome shows Hello, sailor VM482:1 POST localhost:9000/ net::ERR_EMPTY_RESPONSE VM482:1 POST localhost:9000/ net::ERR_EMPTY_RESPONSE I am using latest clojure 1.10.3 and jdk 11 Any idea?
@ericchua3492
@ericchua3492 2 года назад
out/watch.log shows this, wonder this is the cause .. how do you fix this in Mac? Building ... #error { :cause Requested array size exceeds VM limit :via [{:type java.lang.OutOfMemoryError :message Requested array size exceeds VM limit :at [java.util.Arrays copyOf Arrays.java 3745]}] :trace [[java.util.Arrays copyOf Arrays.java 3745] [java.lang.AbstractStringBuilder ensureCapacityInternal AbstractStringBuilder.java 172] [java.lang.AbstractStringBuilder append AbstractStringBuilder.java 748] [java.lang.StringBuffer append StringBuffer.java 424] [java.io.StringWriter write StringWriter.java 77] [java.io.StringWriter append StringWriter.java 210] [java.io.StringWriter append StringWriter.java 41] [clojure.core$fn__7343 invokeStatic core_print.clj 218] [clojure.core$fn__7343 invoke core_print.clj 212] [clojure.lang.MultiFn invoke MultiFn.java 234] [clojure.core$pr_on invokeStatic core.clj 3662] [clojure.core$pr_on invoke core.clj 3656] [clojure.core$print_sequential invokeStatic core_print.clj 66] [clojure.core$fn__7349 invokeStatic core_print.clj 225] [clojure.core$fn__7349 invoke core_print.clj 225] [clojure.lang.MultiFn invoke MultiFn.java 234] [clojure.core$pr_on invokeStatic core.clj 3662] [clojure.core$pr_on invoke core.clj 3656] [clojure.core$print_prefix_map$fn__7352 invoke core_print.clj 233] [clojure.core$print_sequential invokeStatic core_print.clj 66] [clojure.core$print_prefix_map invokeStatic core_print.clj 229] [clojure.core$print_map invokeStatic core_print.clj 238] [clojure.core$fn__7381 invokeStatic core_print.clj 266] [clojure.core$fn__7381 invoke core_print.clj 263] [clojure.lang.MultiFn invoke MultiFn.java 234] [clojure.core$pr_on invokeStatic core.clj 3662] [clojure.core$pr_on invoke core.clj 3656] [clojure.core$print_prefix_map$fn__7352 invoke core_print.clj 233] [clojure.core$print_sequential invokeStatic core_print.clj 66] [clojure.core$print_prefix_map invokeStatic core_print.clj 229] [clojure.core$print_map invokeStatic core_print.clj 238] [clojure.core$fn__7381 invokeStatic core_print.clj 266]]} Watching paths: /Users/eric/Desktop/hello-world/src
@ericchua3492
@ericchua3492 2 года назад
now it shows Building... but still can't work
@ericchua3492
@ericchua3492 2 года назад
if i run without the --watch src first time in chrome dev console, i can see this goog.require could not find: cljs.pprint any idea?
@ericchua3492
@ericchua3492 2 года назад
refreshed on chrome too many times, showed me this in terminal Exception in thread "Thread-774" java.net.SocketException: Protocol wrong type for socket (Write failed) at java.base/java.net.SocketOutputStream.socketWrite0(Native Method) at java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110) at java.base/java.net.SocketOutputStream.write(SocketOutputStream.java:150) at java.base/jdk.internal.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167) at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:102) I tried jdk 11 adopt hotsport and zulu, made no difference. Any idea why --watch not working?
@BetweenTwoParens
@BetweenTwoParens 2 года назад
Hey Eric, I don't believe your issue is related to the JVM or Clojure. - What version of ClojureScript are you working with? (try 1.10.879) Are you running windows or mac? - How did you run the command? can you try: clj -M cljs.main --watch src --compile app --repl
@thefloodist
@thefloodist 2 года назад
Seems you now need to use: 'ctrl-y': 'chlorine:connect-socket-repl' rather than either of the connect-clojure-socket-repl and connect-clojurescript-socket-repl options
@thefloodist
@thefloodist 2 года назад
also the braveclojure slurp thing doesn't seem to work anymore
@BetweenTwoParens
@BetweenTwoParens 2 года назад
Oh, very nice! I will update this. Thank you for heads up!!
@danger4x
@danger4x 2 года назад
Well mate, I have a strong background with PHP / NodeJS ... (10years as Full Stack Development) but I always feel empty about those languages... then my friend suggests that I should go with Clojure. At an early stage! just () '() things impressed me. Do you have more videos about getting started with Clojure? Your method of explaining things is the real deal! I would like to hear more from you! Greetings!
@BetweenTwoParens
@BetweenTwoParens 2 года назад
I understand completely. I also came from a similar world (Node/Browser JS/Python) so I can relate. It's also the thing that made me want to share these videos. I don't have much on Clojure the language. I have found that this area has some good resources like "Getting Clojure", "Quick Clojure" and "Elements of Clojure". Those are my fav' for the early learning journey. Then there are a bunch of others for the rest of the journey too. My focus right now is hoping to flesh out the areas where I often see less coverage e.g. getting started with an app, structuring a Clojure codebase etc. More is in the works!! Cheers!
@danger4x
@danger4x 2 года назад
nice stuff buddy
@BetweenTwoParens
@BetweenTwoParens 2 года назад
Really great to hear, my friend!
@johnelbasha8967
@johnelbasha8967 3 года назад
Straight to the point. Thank you sir!
@SaMusz73
@SaMusz73 3 года назад
When you said " One last thing I want to show you ", instead of the --view command, I expected/hoped for an introduction to figwheel. Thanks for this, great back to basics tutorial.
@BetweenTwoParens
@BetweenTwoParens 3 года назад
I totally wanted to, but the video would be loooong. If you haven't seen it already, checkout this video: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-7b5114xE_GA.html
@Karansing_Rajput
@Karansing_Rajput 3 года назад
Hi Thomas, I am Traditional Java Dev and Totally new in Clojure(even for Lisp) can you please share Initial Docs to start with Clojure for a complete noobie, Thanks :)
@BetweenTwoParens
@BetweenTwoParens 3 года назад
Welcome! 🙇 For getting started with Clojure as a language I am a fan of the books Getting Clojure, Quick Clojure and Programming in Clojure. As for getting started with a backend Clojure app or CLI this one is a little trickier as I have yet to find a book or course which takes one through the steps in one place. In general, I learned by piecing it all together. Having said this, if you have thoughts on what exactly you want to build I can perhaps direct you better. Final note: checkout the Clojurians slack group if you haven't already. There are MANY brilliant and welcoming humans waiting there to help. Cheers!!
@hichhikr
@hichhikr 3 года назад
warm-hearted guy is always the best guy
@johnernst2472
@johnernst2472 3 года назад
Yo how do you feel about clojurescript vs javascript? Slick channel buddy 😎
@BetweenTwoParens
@BetweenTwoParens 3 года назад
As in, which would I choose? Depends on what i'm building. If it's an an app of any serious size then ClojureScript. 💯 Clojure and ClojureScript help rein in the complexity. So that's why I wouldn't want to work with JS on large projects if I had a choice. If it was just a blog, or simple site with simple behaviours I would just do JS, HTML and CSS. Having said this, if you're looking to learn CLJS then a small project is a PERFECT way to explore the language.
@nobodynope2507
@nobodynope2507 3 года назад
can i use adoptopenjdk to sell my game for $5?
@toddcagelives
@toddcagelives 3 года назад
premium content