-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Guide: David Greenberg #4
Comments
I'm really excited by the technologies you've mentioned, especially CRDTs. I'd be very excited about a discussion of "Distributed FP." I have some experience with Clojure, and am interested in learning Rust. Did I mention I'm excited about a discussion of CRDTs? |
+1 for Distributed Functional Programming |
👍 for distributed functional programming. |
+1 for Distributed Functional Programming. But, would really love if you could talk about that by also taking examples from your book Building Applications on Mesos. 👍 |
Cloud Haskell |
+1 for Distributed Functional Programming |
+1 to Distributed Functional Programming |
Here we go! This is the planned session description: If you’re coming to the retreat, you probably are interested in FP, if not already a full-blown user of FP and its techniques. Unfortunately, when it comes time to work on systems that scale beyond one machine, many techniques in functional programming no longer seem to be possible. For example, distributed garbage collection isn’t generally available, which makes it difficult to work with immutable data structures across multiple machines. Another issue is function composition—RPC semantics are difficult to get right, and the additional network latency incurred makes many FP design pattens unrealistic in distributed environments. In this session, we’ll recast various ideas from FP to see their analogies in distributed systems. We will discuss how monotonic functions can offer many of the benefits of pure functions. We’ll look at dependencies and causality: ways our programs express the results of one computation being the input to the next computation, and performant techniques that achieve similar results in distributed systems. We’ll also analyze distributed functional data representations. By deconstructing the things we love most about FP, we’ll see how we can preserve their essence but make them work in distributed environments. You should be familiar with pseudocode—we won’t be digging into specific languages with large amounts of code, but we will look at general ways to express these ideas. You should come eager to discuss, as we’ll learn best by sharing our thoughts and revelations as we break down FP concepts and see how they can be mapped into the distributed domain. |
I'm David Greenberg, a functional and distributed systems programmer. My passions are data structures, concurrency, and distributed systems, and especially their intersection with functional programming concepts. I take a very relaxed approach to types: I equally enjoy Rust & Clojure, and wrote Clojure professionally for many years. I take a stochastic approach to progamming--I assume everything I write will have bugs, and so I like to think about how to use simulation & generative testing to make my software more robust (as opposed to encoding invariants in types).
I've written a variety of functional libraries, including a generatively test CRDT library, an asynchronous HTTP server library, an FPGA DSL for Clojure, and the book Building Applications on Mesos.
There's two topics I'm most excited about talking about, but I need your help to fine-tune what we'll discuss:
If you're interested in other aspects of concurrency, parallelism, and distribution, and their interaction with functional programming, so am I--let's spend the day learning!
If you have other ideas for what I should speak on at the Winter Retreat, please post them below! Vote on ideas by using the thumbs up / thumbs down emojis. Thanks in advance for all of your feedback, and I look forward to being a guide at LambdaConf Winter Retreat 2017!
The text was updated successfully, but these errors were encountered: