This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2022-02-03
Channels
- # announcements (8)
- # aws (2)
- # babashka (16)
- # beginners (173)
- # calva (13)
- # cider (4)
- # cljfx (6)
- # cljs-dev (108)
- # clojure (63)
- # clojure-australia (2)
- # clojure-dev (10)
- # clojure-europe (73)
- # clojure-italy (8)
- # clojure-nl (4)
- # clojure-norway (5)
- # clojure-uk (4)
- # clojurescript (49)
- # clojureverse-ops (4)
- # community-development (3)
- # core-async (23)
- # cursive (3)
- # data-science (5)
- # datomic (25)
- # emacs (3)
- # events (1)
- # fulcro (13)
- # helix (5)
- # introduce-yourself (1)
- # lein-figwheel (1)
- # lsp (36)
- # malli (1)
- # meander (2)
- # membrane (4)
- # music (8)
- # nextjournal (51)
- # off-topic (47)
- # other-languages (5)
- # pathom (31)
- # pedestal (5)
- # planck (14)
- # polylith (5)
- # portal (1)
- # re-frame (30)
- # react (2)
- # reagent (24)
- # releases (1)
- # rewrite-clj (18)
- # ring (9)
- # sci (33)
- # shadow-cljs (49)
- # testing (3)
- # tools-build (21)
- # tools-deps (29)
- # vim (19)
- # web-security (1)
- # xtdb (12)
@seancorfield I've noticed on discord you've developed software in Java, Groovy and Scala and eventually Clojure. As I assume Clojure is your long term choice nowadays, I'm curious if you ever miss static typing / compile time checks
I'm asking for your personal opinion, and maybe any way to mitigate certain disadvantages in a dynamically typed language
@filip.strajnar I do not miss it. That said, I think if I couldn't work in Clojure, I might try to find work in Kotlin which I learned a few years back but haven't had a chance to build anything serious with. I quite like the nullability-in-the-types aspect of that.
I find Java too verbose and its type system annoying (because it isn't powerful enough). I find Scala too cryptic at times and its type system annoying (because it is too complex -- maybe Scala 3 improves things but I think Scala just has stuff I find fundamentally frustrating/annoying, e.g., implicit). I quite liked Groovy for the balance it had between Java and more dynamic languages.
I think Scala 3 is probably more cryptic than Scala 2, as they added more features... For example, I can see indentation-based blocks mixed with braces-based blocks being a problem hard to debug...
Why am I not surprised... But maybe Scala 3's type system is simpler? (he wondered, hopefully) Mind you, at this point I don't think I could ever go back to Scala. It was fascinating to me as a language designer/implementor myself but I did not enjoy programming in it. The conferences and user groups were really interesting though...
What are the "certain disadvantages" you have in mind?
mostly compile time warning/errors, statically typed languages can go a long way in preventing a lot of human error, especially from my experience (which is no doubt significantly lesser than yours). most notably I'd point out that statically typed languages (as a side not I'm employed working in C#, which I'm used to but I don't like very much) allow me to do a lot without looking at documentation, as the type system is usually (if used correctly) mostly self documenting, and I get swift feedback from IDE as I type my code in case I make a silly error. some languages particularly in FP family go even further and significantly limit runtime exceptions with Maybe monads and constructs alike (example haskell), and some even claim to remove all possibilities of runtime exceptions (Elm,Idris)
in C# and TS (and sometimes unfortunately JS), exceptions are often hidden from me, and are harder to resolve than a mistake of putting the wrong time and IDE warns me in effectively real time
from very limited experience with clojure, those issues were quite rare, which I would attribute due to strong immutability (which is great), and quite simple sintax (Lisp), but it's also only fair to mention i used very external libraries which are often important on serious projects
@filip.strajnar I think you get a lot of that sort of support in Clojure via LSP/clj-kondo and having a connected REPL so the editor integration can give you code insight on function calls etc.
@filip.strajnar take a look at some examples https://clojure-lsp.io/features/
I think also, if you have a good workflow with the connected REPL, you're testing a lot more things as you build your functions and can avoid a lot of mistakes that might otherwise get caught only later in testing or production?
Nobody:
Me
confronting the folly of having proposed yet another conference talk: https://www.evalapply.org/posts/how-to-give-a-conference-talk/
Posting it here because:
• it emerged from a conversation with whip-smart fellow Clojurists whom I've been goading about speaking publicly,
• because the conference talk in question is for Clojure newcomers, and
• because it looks so patently absurd when placed in context of the absolute rock stars listed around it: https://functionalconf.com/ (scroll down to "Speakers"). The post speaks to this last point in particular.
Love it! Yup, as someone who ended up being a regular conference speaker around the world during the '00s, I totally identify with all of this. Especially the last minute "refactoring" of the talk (one time I was "struck by inspiration" during the lunch break before my 1 pm talk -- and completely rewrote my talk instead of eating lunch and thus ended up giving a brand new talk with zero rehearsal that no one in the conference org team had even seen... because it seemed like a good idea with 60 minutes left before I went on stage! 🤯 )
@seancorfield sorry for tagging you but I'd love to see it if you have a link to a recording
@U9W44J4RW it was years ago, at an Adobe conference, and I don't remember whether it was recorded. Aside from my RDD talk to London Clojurians I haven't spoken at a conference in about a decade now.
too bad 😕
Anyone else find the number of tabs you have open directly indicates how annoying the problem you are working on is ?
I see you're still not quite happy with Azure. :D I always have a 100+ tabs open - regardless of what I'm working on. I treat it as a backlog of sorts. Things to read, to watch, to listen to.
Im trying to create a workflow in a github action that will use a cert stored in azure key vault to sign the result of building this project.
I got it working no problem with the cert stored as a secret in github secrets, but apparently azure key vault is better
I garbage collect my tabs, if I have around 40 and the icons start disappearing I restart my browser
I don’t think that’s garbage collection. That’s restarting the process to clean up a memory leak
Yeah true :’)
> I don’t think that’s garbage collection. That’s restarting the process to clean up a memory leak Beg to differ. We once had a low-traffic service who's garbage kept building and our GC was a Jenkins job that triggered a rolling restart every six hours. This worked fine for many many weeks. Then someone found the half day to look at it. Apparently we had memoised a function that returned a lambda.
"The null garbage collector is a valid garbage collector." https://devblogs.microsoft.com/oldnewthing/20180228-00/?p=98125
We are our own grave diggers. We build these apps guys.
> Anyone else find the number of tabs you have open directly indicates how annoying the problem you are working on is ? Not entirely, I find the better metric to be when you close all those tabs, how many duplicates of the same page you had. Debugging az issues usually leaves me with 5 of the same official documentation page, before I stumble across that one corner that didn't go through az support and actually figured out how to fix their issue #notsalty
I feel this metric, in my soul. The only thing more satisfying than finishing the ticket is closing all of the tabs at the end
treetabs, I see a fellow person of culture
Eulerian and Hamilton path detection extension in tabs 😄