Eric Normand
Eric Normand
  • Видео 235
  • Просмотров 232 535

Видео

On Composition - Zach Tellman
Просмотров 1,1 тыс.2 года назад
On Composition - Zach Tellman
cljs.main - David Nolen
Просмотров 1,3 тыс.2 года назад
cljs.main - David Nolen
Code Hibernation and Survivability - George Kierstein
Просмотров 1542 года назад
Code Hibernation and Survivability - George Kierstein
apt-get install leiningen - Elana Hashman
Просмотров 2752 года назад
apt-get install leiningen - Elana Hashman
Building a World Class (Clojure) Team - Rebecca Kinsella
Просмотров 2952 года назад
Building a World Class (Clojure) Team - Rebecca Kinsella
How to Survive the Robots: Professional Development 2.0: A Business Strategy - Kim Crayton
Просмотров 1302 года назад
How to Survive the Robots: Professional Development 2.0: A Business Strategy - Kim Crayton
Revenge of the Pragmatists - Baishampayan Ghose
Просмотров 6012 года назад
Revenge of the Pragmatists - Baishampayan Ghose
Personal Data Preservation, Inspired by Ancient Writing - Will Byrd
Просмотров 3112 года назад
Personal Data Preservation, Inspired by Ancient Writing - Will Byrd
7 Falsehoods Programmers Believe about Place & Time - Emily Ashley
Просмотров 3052 года назад
7 Falsehoods Programmers Believe about Place & Time - Emily Ashley
My feelings about static vs dynamic typing
Просмотров 2,5 тыс.2 года назад
My feelings about static vs dynamic typing
Computer Science as Empirical Inquiry: Symbols and Search
Просмотров 8462 года назад
Computer Science as Empirical Inquiry: Symbols and Search
How far can we stretch technical debt?
Просмотров 7212 года назад
How far can we stretch technical debt?
How to avoid premature optimization?
Просмотров 8122 года назад
How to avoid premature optimization?
What is domain modeling?
Просмотров 1,2 тыс.3 года назад
What is domain modeling?
Computer Programming as an Art
Просмотров 1,2 тыс.3 года назад
Computer Programming as an Art
Programmer as Navigator
Просмотров 5083 года назад
Programmer as Navigator
The Humble Programmer
Просмотров 1,2 тыс.3 года назад
The Humble Programmer
What's the relationship between abstraction and generality?
Просмотров 7703 года назад
What's the relationship between abstraction and generality?
Why is data so powerful?
Просмотров 9493 года назад
Why is data so powerful?
What if data is a really bad idea?
Просмотров 2,3 тыс.3 года назад
What if data is a really bad idea?
On the criteria to be used in decomposing systems into modules
Просмотров 1,5 тыс.3 года назад
On the criteria to be used in decomposing systems into modules
What is missing from Stratified Design?
Просмотров 6273 года назад
What is missing from Stratified Design?
Generality in Artificial Intelligence
Просмотров 4523 года назад
Generality in Artificial Intelligence
Some Comments from a Numerical Analyst
Просмотров 2993 года назад
Some Comments from a Numerical Analyst
Don't overcomplicate the onion architecture
Просмотров 2,1 тыс.3 года назад
Don't overcomplicate the onion architecture
Is Haskell the best procedural language?
Просмотров 2 тыс.3 года назад
Is Haskell the best procedural language?
Do forces really exist?
Просмотров 4533 года назад
Do forces really exist?
Could we build Newtonian mechanics on purpose?
Просмотров 2373 года назад
Could we build Newtonian mechanics on purpose?
How is domain modeling related to Starbucks?
Просмотров 3953 года назад
How is domain modeling related to Starbucks?

Комментарии

  • @DataPastor
    @DataPastor День назад

    Perfectly relaxing tone, perfect podcast for dog walking and before going to bed. Very good takes btw. I fully agree!

  • @and4828
    @and4828 6 дней назад

    Great book, really enjoying it.

  • @axel_ba1816
    @axel_ba1816 11 дней назад

    I have a information system project development class and got this assignment, tysm for the explanation.

  • @DataPastor
    @DataPastor Месяц назад

    LISP is super powerful and a joy to write, but it is a write-only language. It is a mental challenge to understand a LISP source code (vs Python, Java or Go source codes which are kind of self-explanatory).

  • @SAMUEL-yr3vv
    @SAMUEL-yr3vv Месяц назад

    Its not a problem, it is what it is. You dont complain to a wizard about how they write their spellbook. Imagine a world that every wizard now has to write their spell in a particular way

  • @mehtubbhai9709
    @mehtubbhai9709 Месяц назад

    @Eric. Your videos cover a lot of the questions I have about functional programming. Thanks so much for making these videos

  • @JavierRuere-t2o
    @JavierRuere-t2o Месяц назад

    I can't understand the books being recommended. Does anyone understand the names?

  • @JavierRuere-t2o
    @JavierRuere-t2o Месяц назад

    The audio is quite bad.

  • @ericnormand4210
    @ericnormand4210 Месяц назад

    One thing I should have focused more on is how well-designed the new features are. They fit right in. It's a great sign that the Clojure core team values design so much!

  • @pappapez
    @pappapez Месяц назад

    At around 17:00 on being able to pass Java methods as functions directly. I think it’s a big deal for beginners. I remember tripping on it and having to ask about it. This new way is much more intuitive.

    • @ericnormand4210
      @ericnormand4210 Месяц назад

      You might be right! At least the feature is well-designed!

    • @GerhardM13
      @GerhardM13 Месяц назад

      Why would they put so much emphasis on how to write java from clojure? If someone wants to write java he can use java.

    • @pappapez
      @pappapez Месяц назад

      @@GerhardM13 That's precisely the why of this. Rich Hickey created Clojure because he didn't like to write Java. Yet the JVM is a wonderful thing and now we have a language to target it that is a joy to use. I can recommend the presentation A History of Clojure to hear Rich Hickey explain this and a lot more of the rationale. ruclips.net/video/nD-QHbRWcoM/видео.htmlsi=a0C4TGFWmxIquYkd

    • @GerhardM13
      @GerhardM13 Месяц назад

      Thanks. Is it possible then to use new features like "virtual threads" for example from clojure or the language maintainers need to reimplement async package?

  • @thatryanp
    @thatryanp 2 месяца назад

    Impressive you can do this in one take while driving. You sound just like me talking to my dictation app, but fewer pauses and less rambling.

  • @idiomaxiom
    @idiomaxiom 2 месяца назад

    As soon as you give up the ability to handle time, the language becomes a pain in the ass for practical applications generally.

  • @PixelOutlaw
    @PixelOutlaw 2 месяца назад

    A maintenance disaster is what it is. It has the side effect of deferring naming things, making the code rdundant long chains of copy/pasted transformations. Tacit programming locally is OK but in the large it leads to code that is often missing the "what". Heavy de-structuring and threading macros can destroy Clojure programs quickly. It's a tool, not a religion. The greatest power we have as programmers is linguistic abstraction such that we don't need to keep rewriting the same transformations over and over but can call them by name and recreate their effects in a single line.

  • @white2bear
    @white2bear 2 месяца назад

    Sorry, Eric! Almost unwatchable because of audio cuts repeatedly!

  • @simonirimiya.fromnigeria
    @simonirimiya.fromnigeria 2 месяца назад

    Hi

  • @oitsukijudan
    @oitsukijudan 2 месяца назад

    Very impressive how you reformulated my question much clearer than I asked it. Thank you for answering!

  • @alskidan
    @alskidan 2 месяца назад

    The idea is cool. I’d add a blacklist for known VPN services. Otherwise there will be individuals who will access your site from cheapest countries. If you plan on commercializing this idea, the VPN issue might be a dealbreaker.

  • @pwhittinx
    @pwhittinx 2 месяца назад

    If a user is using a VPN can they spoof their actual country? If so, is there a way to detect this? I've seen tv.youtube.com do this kind of detection.

  • @RustyWalters-wm7oi
    @RustyWalters-wm7oi 2 месяца назад

    Your audio cuts in and out quite a bit. Seems like your microphone isn't always picking up your voice when first speaking.

  • @aguluman
    @aguluman 3 месяца назад

    Thank you

  • @11rchitwood
    @11rchitwood 3 месяца назад

    Thanks again for today!

  • @DavidLindes
    @DavidLindes 3 месяца назад

    "And you know how I know how I know that I'll prosper? 'Cause I stand here beside you today" - Ren (from Hi Ren)... about something quite different, but might be relevant here. Lisp is still around some 66 years after its initial creation... will it ever become comparatively popular? I don't know... but I kinda hope it does, and I certainly hope that people (including myself) put time in to collaborating on well-documented, welcoming, rich libraries, etc...

  • @Donald-x8Donald_06o3
    @Donald-x8Donald_06o3 3 месяца назад

    Tune into an exclusive interview with Binance's CEO for a sneak peek into future developments

  • @AndreiGeorgescu-j9p
    @AndreiGeorgescu-j9p 3 месяца назад

    I appreciate the video but honestly preferring a dynamically typed language is absurd. All of your complaints are that it's not a dependent total type system. So basically if you can't have a Lamborghini you don't buy a car? And for most cases quick check and quickspec get you nearly all the way there. Algebra Driven Design is a book that goes into exactly what you're talking about in haskell. Only accessible book I'm aware of that does and it relies heavily on static typing

  • @minymen75
    @minymen75 3 месяца назад

    Mark Normands brother!

  • @CalvaTV
    @CalvaTV 4 месяца назад

    That was such an awesome refactoring. Wonderful that you think out aloud so naturally.

  • @CalvaTV
    @CalvaTV 4 месяца назад

    There's a command in Calva for creating a Getting Started Project. It is branded a bit as Getting Started with Clojure, which is the main focus, but it starts with an intro to Calva. FYI.

    • @CalvaTV
      @CalvaTV 4 месяца назад

      There's a Paredit “Expand Selection” command which is good for selecting forms in a controlled manner. (Even if you do a good jib with the mouse there, it is much, much quicker to use Expand Selection.) That Getting Started Project has brief intro to Paredit too, even if geared towards people who are not familiar with structural editing at all.

    • @CalvaTV
      @CalvaTV 4 месяца назад

      I'd be super happy to jump into a screen sharing with you, Eric, and I can give you a crash course. We could even stream it. =) You know where to find me! /PEZ

    • @CalvaTV
      @CalvaTV 4 месяца назад

      At 28:20 you seem to have to fight the editor. You say something about that enter doesn't go to the next line. I've not seen that before. It may be that I have some config that avoids it, but to know that I need to know a bit more about how to reproduce the issue. Not fully following in the video...

    • @CalvaTV
      @CalvaTV 4 месяца назад

      I really do not understand what is going on with :item-name coming back all the time. Calva has no keystroke like that. So weird!

    • @CalvaTV
      @CalvaTV 4 месяца назад

      Now watched further. Seems it was something about from where the test runner was triggered? I'd love me a copy of that project so I can try reproduce.

  • @charlesdematas3742
    @charlesdematas3742 4 месяца назад

    What are those things on the walls.

    • @goodthink_ing1
      @goodthink_ing1 Месяц назад

      acoustic mufflers. _zero_echo. radio studio quality sound.

  • @larionov999
    @larionov999 4 месяца назад

    thank you for doing these! always useful to see how other people do it. (the tooltip was infuriating me the whole way haha)

    • @CalvaTV
      @CalvaTV 4 месяца назад

      Those hovers popping up are driving me nuts!

  • @alexdreptu
    @alexdreptu 4 месяца назад

    You can disable the hover popup in VSCode by setting "editor.hover.enabled": false in User Settings JSON.

    • @pappapez
      @pappapez 4 месяца назад

      There's also editor.hover.delay which is set to 300 ms by default. I have set mine to 1300 and it makes things much calmer.

  • @elcapitan6126
    @elcapitan6126 4 месяца назад

    really enjoy watching these 👍

    • @elcapitan6126
      @elcapitan6126 4 месяца назад

      but did the recording cut short for some reason?

  • @government_authority
    @government_authority 4 месяца назад

    regarding degradation, I would remember quality of an item before update, and after update. and if it's decreased after all rules applied, amplify the difference by 2 for conjured items and 1 for normal items.

  • @amorphousblob2721
    @amorphousblob2721 4 месяца назад

    8:21 - No, ANTLR is NOT a 100% solution to parsing. The fact that it's hard to use is because of all the stuff it leaves unsolved. The complexity of doing that stuff is dumped into every single application that uses ANTLR, making those applications more complex, which reinforces the need to have a giant team to maintain it. Most big frameworks in mainstream languages are 80% solutions or less. True 100% solutoins require a lot of knowledge. You have to know what problems others are running into, and your language has to allow you to solve _all_ the problems, even the ones that users unconsciously just endure without complaining. An example of a 100% solution would be CLOS with the MOP included. Or Common Lisp's condition system. A ton of research went into those. Mainstream solutions are just built ad-hoc using the easiest approach given the tools already available. Then the inevitable limitations are addressed if it's easy to do so. The real curse of Lisp is that since Lisp is so powerful and you only need a few developers, those developers end up being critical to an organization, because they're the equivalent of a big team. Therefore, firing and replacing one of those developers is like laying off an entire department and rebuilding it from the ground up. Clojure escaped the "Curse of Lisp" by being an 80% Lisp. The reason you need all those Java libraries is because Clojure is relatively weak. Common Lisp has pretty good C interop, but it's not used anywhere near as frequently as Java is in Clojure programs.

  • @11rchitwood
    @11rchitwood 4 месяца назад

    Are you going to have office hours on the 4th?

  • @kyjo72682
    @kyjo72682 4 месяца назад

    I think you make a good point. People seem to (want to) misunderstand what you are actually trying to say.

    • @AllanSavolainen
      @AllanSavolainen 2 месяца назад

      But it is a silly point. The first part could be true, it might help the compiler to optimize better, though in C you can make cache friendly data structures more easily. Second point seems to forget that there are decades worth of libraries written for C, I would say that every data structure has C library written for it and could be used and the developer wouldn't need to write one himself. This doesn't hold true for Haskell, and mid level developer probably cannot implement random new data structure/algorithm optimally. C probably is harder to write safely than Haskell, but in many ways, it is easier. Also Haskell probably won't be faster on embedded systems etc where you don't have resources to copy stuff. Actually don't know how Haskell would handle things if there is not enough memory and it cannot mutate the data in place. Or if it can, then it really isn't functionally pure language :)

  • @shawnbadger2737
    @shawnbadger2737 4 месяца назад

    I love Lisp, but it suffers from the same types of problems that Python does. As it scales, it's just too easy to break things with mismatched types, number of arguments, etc... you have to exercise all code paths at runtime to have confidence in it. Compare that to Rust where if it compiles, it typically just works. If I was starting a company that needed to innovate very quickly, I'd use Lisp. But if I was a company that had mission critical systems that must work, but could take a little more time to get there, I'd likely use Rust.

    • @shaunpearce-k9p
      @shaunpearce-k9p 19 дней назад

      Mission Critical.. ITA Flight scheduling software is written is Common Lisp. JPL uses Lisp extensively.

  • @timothymills5149
    @timothymills5149 4 месяца назад

    Thank you for the string concatenation e.g. So much easier to see the motivation behind the distinction between commutativity and associativity with a simple case where one applies and the other doesn’t.

  • @nuggetonastick1804
    @nuggetonastick1804 4 месяца назад

  • @BenHutchison
    @BenHutchison 4 месяца назад

    "monoids kick monads' butt" :facepalm:. Does true kick false's butt? Does 42 kick 41's butt? Is > greater-than <?

  • @pwhittinx
    @pwhittinx 5 месяцев назад

    Hi Eric, FYI, the audio level is quite low compared to other RUclips content

  • @11rchitwood
    @11rchitwood 5 месяцев назад

    What’s the link to submit a question? I hope to join soon but have an ongoing scheduling conflict.

  • @AlexRodriguez-gb9ez
    @AlexRodriguez-gb9ez 5 месяцев назад

    Clojure is for IQ 130 ppl, Haskell is for IQ 150 ppl...

    • @DataPastor
      @DataPastor 15 дней назад

      I am 146, so still in the Clojure bucket. :)

  • @11rchitwood
    @11rchitwood 5 месяцев назад

    Re: formalizing a domain. That's one of the reason's Ken Iverson created APL. He wanted to use it as a new, more regular notation to teach math. Bonus points that it is executable.

  • @Swimmer326
    @Swimmer326 5 месяцев назад

    7 months late to the party, this is such a weak argument I figured I’d leave a comment anyways. Comparing Haskell to a university 100 level understanding of C is such a weak argument because the people who write C don’t only have this level of understanding. I don’t know what a monad is but that doesn’t mean I can cast doubt on the fact that serious Haskell users understand monads and when to use them. The same argument can and should be made about C. This guy doesn’t roll his own data structures or import libraries, and just assumed everyone else was doing the same. Either this person is attempting to deceive people who don’t know any better, or they truly don’t understand C development, but either option shows why not to trust this line of thinking.

  • @ratfuk9340
    @ratfuk9340 5 месяцев назад

    All the ppl coming from Prime's video apparently can't understand what is being said. Quite literally every single comment by these guys misses the point by a fucking lightyear.

    • @kyjo72682
      @kyjo72682 4 месяца назад

      Exactly! Same as Prime in that video. :)

  • @gnuemacs1166
    @gnuemacs1166 5 месяцев назад

    Even eMacs ends up not using lisp tree sitter for eMacs is c not lisp

  • @darkengine5931
    @darkengine5931 5 месяцев назад

    The main benefit I find to dynamic typing is that it can ease the process of writing and modifying code, provided we think about our data more abstractly. The major downside to me is that it opens up far more room for runtime errors and need for more comprehensive testing (potentially including validation of input types for functions), as the omission of type specification prevents many programmer mistakes from being caught at compile time. The final one to me is that dynamic typing is hopelessly less efficient than static typing for the most performance-critical of code (ex: a game engine or path tracer), since the appropriate size and precision and even alignment of a data type is not something that an optimizer can deduce absent runtime inputs. Even an optimizer that performs contorting acts analyzing IR to determine the optimal register types and instruction selection lacks the sufficient information in advance to do so anywhere close to optimally for dynamically-typed languages. So much of the added performance of statically-typed languages comes from programmers carefully and explicitly choosing the most economical data types to optimize for locality of reference, SIMD registers, to eliminate false sharing, etc.

  • @StefaanHimpe
    @StefaanHimpe 5 месяцев назад

    My suspicion is that FP in general is not popular because it heavily relies on recursion, which many people find hard to grasp (once you understand it, it makes sense, but until then it's deep magic, and many fail to overcome this obstacle (monads are even worse haha)). Obviously syntax matters a lot. Why did python win over perl? LISP in particular is annoying some people because of the parentheses (this I know for a fact, given that I'm one those people haha) - you can deny it, but that doesn't disprove it. To add to that, LISP comes with some really awfully named functions for basic things: wtf is a CAR and a CDR? It sounds like total nonsense. I'm already turned off before I even started :) TBH, I've never seen anything other than toy examples written in lisp or scheme (No doubt big systems exist, I just never saw them - emacs perhaps being the sole exception) which creates the impression that "no one" is using it for "real work" or that perhaps its approach of combining small functions leads to an untractable mess of thousands of weirdly named small functions (some of which probably could be almost duplicates?) trying to build the equivalent of a million line of C++ code system. It may be easy to write, but can you still understand it 3-5-10 years down the road? Here I agree with the individualism argument: if everyone starts to introduce mini DSLs, it doesn't help someone new to the system to make sense of it all. According to google trends (is that a good source?), clojure is much LESS popular than lisp nowadays, so in retrospect the JVM argument didn't really hold up. As for the argument "Parsing in LISP is easy" - sure, if you parse lisp-like trees, since they are pre-parsed by the human typing them in. However, writing a C++ parser with semantic disambiguation most likely will not be easier in lisp than in C++ because the recursive descent parsing is not where the real difficulty lies (but I'd love to be corrected on this!).

  • @faster-than-light-memes
    @faster-than-light-memes 6 месяцев назад

    Eric, your stuff is literally in my top 3 sources on the philosophy of programming. Together with Gerald Sussman, Hal Abelson, SICP and Rich Hickey. Basically there is a whole scientific endevour that would talk about why languages are powerful and the kinds of building blocks possible and things like this. And this whole subfield basically doens't exist at the moment; And your stuff is sort of hinting at this I think.