LispCast http://www.lispcast.com/ A blog about the simple joys of functional programming. en Exponential Backoff http://www.lispcast.com/exponential-backoff http://www.lispcast.com/exponential-backoff Fri 13 Mar 2015 02:01:59 PM CDT A common failure in distributed systems is a server with a rate limit or with no limit but begins failing due to load. A standard solution is to retry after waiting a small time, increasing that time after each failure. We create a macro to handle this waiting and retrying. <p><center><a href="http://www.lispcast.com/exponential-backoff">Read full post</a></center></p> Lisp with Macros is Two Languages http://www.lispcast.com/lisp-with-macros-language-stack http://www.lispcast.com/lisp-with-macros-language-stack Tue 08 Oct 2013 10:47:27 AM CDT Lisp with macros can be seen as two languages, each with different semantics. The base language can be interpreted directly, whereas the result of interpreting the macro language is to produce a new program in the base language. <p><center><a href="http://www.lispcast.com/lisp-with-macros-language-stack">Read full post</a></center></p> Try Three Times http://www.lispcast.com/try-three-times http://www.lispcast.com/try-three-times Thu 05 Mar 2015 03:44:38 PM CST Distributed systems fail in indistinguishable ways. Often, retrying is a good solution to intermittent errors. We create a retry macro to handle the retries in a generic way. <p><center><a href="http://www.lispcast.com/try-three-times">Read full post</a></center></p> When To Use a Macro in Clojure http://www.lispcast.com/when-to-use-a-macro http://www.lispcast.com/when-to-use-a-macro Fri 07 Mar 2014 03:45:07 PM CST Macros should be avoided to the extent possible. There are three circumstances where they are required. <p><center><a href="http://www.lispcast.com/when-to-use-a-macro">Read full post</a></center></p>