Functional Design in Clojure

Functional Design in Clojure

By Christoph Neumann and Nate JonesTechnology
Download on the App Store

Functional Design in Clojure episodes

  • Ep 079: Compose Thyself

    Each week, we discuss a different topic about Clojure and functional programming.

    If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

    This week, the topic is: "comp." We create a whole episode by combining examples of useful uses of comp.

    Selected quotes:

    • "It's the Voltron of functions."
    • "Our only tool for the job is functions."
    • "Getting your higher-order functional thinking going."
    • "Not only is it concise, it's really easy to understand, which is one of the awesome superpowers of Clojure."
    • Links:

      • comp
      • Related Episodes:

        • 061: Transcendental Transformations
        • 076: Multiple Views on Juxt
        • 078: Impartial Thoughts
        • 28 min
        • Ep 078: Impartial Thoughts

          Each week, we discuss a different topic about Clojure and functional programming.

          If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

          This week, the topic is: "partial." We cover some of the ways we use partial, without getting too literal.

          Selected quotes:

          • "We love punning so much, we pun in our code."
          • "It didn't help that I encountered this in academia."
          • "Not the function you have, but the function you need."
          • "I would use partial more if it wasn't so long."
          • Links:

            • partial
            • Episodes:

              • 014: Fiddle with the REPL
              • 26 min
              • Ep 077: Thread Some

                Each week, we discuss a different topic about Clojure and functional programming.

                If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                This week, the topic is: "some-> and some->>." We spend some time going through how these macros help keep our code nil-safe.

                Selected quotes:

                • "Keep trying till you hit a nil and then stop."
                • "That seemed all well and good, and then I hit nil."
                • "It ends up being just a bit more concise."
                • "A nice way of testing something and then being able to use it right away."
                • Links:

                  • some->
                  • some->>
                  • 24 min
                  • Ep 076: Multiple Views on Juxt

                    Each week, we discuss a different topic about Clojure and functional programming.

                    If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                    This week, the topic is: "juxt." We take a turn with juxt, looking at all the ways it can help line up data.

                    Selected quotes:

                    • "When it feels like core is missing something obvious, there's probably an idiom you need to learn."
                    • "The way you become an excellent writer of Clojure is by reading excellent Clojure code."
                    • Links:

                      • juxt
                      • Advent 2019 part 4, A useful idiom
                      • Bobby Towers' "Just Juxt" posts
                      • Episodes:

                        • 012: Embrace the REPL
                        • 013: Connect the REPL
                        • 014: Fiddle with the REPL
                        • 31 min
                        • Ep 075: Merge With Fun

                          Each week, we discuss a different topic about Clojure and functional programming.

                          If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                          This week, the topic is: "merge-with." We focus in on merge-with, a powerful function for aggregating data.

                          Selected quotes:

                          • "We pick up idioms from other people."
                          • "What sounds insane at face value actually starts to make a lot of sense."
                          • "It's just a filter, you don't even have to write a function for that."
                          • "The important part in the middle, where we might mess up, is all pure."
                          • "We don't just have an O(n) problem, we have an 0(n) API calls problem."
                          • Links:

                            • merge-with
                            • Episodes:

                              • 047: What is "nil punning"?
                              • 27 min
                              • Ep 074: Deploy, They Said. It'll Be Fun, They Said.

                                Each week, we discuss a different topic about Clojure and functional programming.

                                If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                                This week, the topic is: "Deploying Clojure." We survey the myriad ways we've used to launch our code into production, and laugh about the various complexities we've found.

                                Selected quotes:

                                • "How do you get closure on the development of your Clojure code?"
                                • "What do you mean by production?"
                                • "Tomcat goes to war."
                                • "That was back before containers."
                                • "Trade a little bit of money for a lot of sanity."
                                • "The problem with these things is the configuration you end up with is really simple after you've read 8 hours of documentation."
                                • "The number of lines of code does not indicate the amount of effort."
                                • "Every time you accept a new component into your system, you are also accepting its complexity."
                                • 28 min
                                • Ep 073: Silent Sockets

                                  Each week, we discuss a different topic about Clojure and functional programming.

                                  If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                                  This week, the topic is: "Checking websocket health." We worry about the health of our websockets and, after looking for help from the standards bodies, roll up our sleeves and handle it ourselves.

                                  Selected quotes:

                                  • "It's the ghosting in the websocket world."
                                  • "With polling, every request is a fresh opportunity to recover from the last request's errors."
                                  • "Long polling is just beating the server up at a slower rate."
                                  • "By giving your code names with meaning, you can read the code that uses it and comprehend it faster."
                                  • "Complexity costs, and you pay in time and confusion."
                                  • Related episodes:

                                    • 012: Embrace the REPL
                                    • 020: Data Dessert
                                    • 39 min
                                    • Ep 072: Sea of Sockets

                                      Each week, we discuss a different topic about Clojure and functional programming.

                                      If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                                      This week, the topic is: "Organizing our websocket code." We switch to using a component to manage our websockets, enabling ease of development and future growth.

                                      Selected quotes:

                                      • "It feels like every time I use a global, a butterfly dies."
                                      • "We don't want to leave the REPL!"
                                      • "It's important to keep the abstraction un-leaky."
                                      • "When you lower the cognitive load of programming, that makes it more enjoyable."
                                      • 33 min
                                      • Ep 071: Socket Synergy

                                        Each week, we discuss a different topic about Clojure and functional programming.

                                        If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                                        This week, the topic is: "Using websockets for notification." We wander into the weeds, jumping through the myriad hoops required to deliver a simple notification.

                                        Selected quotes:

                                        • "It's like we're taking a regular series and upgrading it somehow."
                                        • "Welcome to programming, where you'll spend hours diving into rabbit holes; and still love your work!"
                                        • "That sentence you just said sounds something they would say in a movie that would make all the programmers in the audience roll their eyes simultaneously."
                                        • "We just replaced one problem with another."
                                        • Related episodes:

                                          • 053: How can I save my data from serialization?
                                          • 30 min
                                          • Ep 070: Socket Circus

                                            Each week, we discuss a different topic about Clojure and functional programming.

                                            If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                                            This week, the topic is: "Websockets." We talk about spontaneously sending data from the server to the client to address our users' insecurities.

                                            Selected quotes:

                                            • "Classic engineering solution, let's just bend a couple of assumptions."
                                            • "Reloading the web page is 1995-style integration."
                                            • "Poll every tenth of a second? Yeah, that'll work till we need to scale past 4 users."
                                            • "In every engineering choice, there is always a tradeoff."
                                            • 30 min

                                            About Functional Design in Clojure

                                            From the publisher's feed

                                            Each week, we discuss a software design problem and how we might solve it using functional principles and the Clojure programming language.