lambdaconf / winter-retreat-2017

The official repository for the LambdaConf 2017 Winter Retreat (January 8 - 12).
12 stars 0 forks source link

Guide: Daniel Spiewak #10

Open djspiewak opened 7 years ago

djspiewak commented 7 years ago

Hi, I'm Daniel Spiewak. I… do a lot of Scala stuff. I've been using Scala for almost exactly 10 years now, and have been on my FP journey for almost exactly as long. Along the way I've worked in academia, learned a bunch of other random languages, pioneered algorithms and data structures, and acquired far more knowledge than I ever wanted on the topic of achieving performance on the JVM.

In more recent years, I've been strongly interested by the problem of building scalable abstractions. In my view, an abstraction that imposes a serious performance cost (for some problem-specific definition of "serious") is not a useful abstraction. Interesting, maybe, but not useful. But at the same time, higher-order abstractions are incredibly helpful in structuring reasonable software for solving complex problems. My interest is in having my cake and eating it too. I'm never happier than when I'm writing incredibly messy, ugly, imperative code that supports a pure, lawful and safe abstraction with extremely high performance.

In less recent years, I've worked extensively in distributed systems at scale, parsing algorithms, compiler design, type theory, theory of computation, attribute grammars, distributed real-time optimistic concurrency, database design and implementation, stochastic modeling and optimization of video games, functional data structures, and even UI design and framework implementation. I'm still interested in basically all of these things, I'm just not working on them as much of late.

I'm happy to present on any of these topics, or other things that I've completely forgotten about. Off the complete top of my head, some ideas that might be cool:

Or, you know… other stuff.

Please post your suggestions for me 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!

ShaneDelmore commented 7 years ago

Task, parsing, Emm, FS2, general good practices for code organization in FP apps for those coming from an OO background.

jdegoes commented 7 years ago

Ideal Functional Streaming or Parsing with Derivatives.

Or ideally, both. That is, show the development of a simple (not production) streaming library which is then used to implement parsing with derivatives.

jdegoes commented 7 years ago

However I suspect Task might have broader appeal. 😄

rezalesmana commented 7 years ago

Functional Concurrency or Ideal Functional Streaming :D

dcsobral commented 7 years ago

I'm a sucker for parsers, so sign me in for that! :)

ErrorNullPointer commented 7 years ago

Parsers would be awesome! I would definitely attend that.

djspiewak commented 7 years ago

Primary: Functional Async on the JVM

In this talk, we will take a clean-slate approach to designing a reasonable abstraction for async and parallel functional programming in Scala. We will examine some of the formal and informal foundations for such abstractions, and pay special attention to the unique and fundamental constraints imposed on us by the JVM. We'll look at not only how to derive and implement this stuff ourselves, from scratch, for fun and profit, but also how our unicorn solution compares to the various solutions available in Scala today.

Bring a laptop! If you enjoy following along as your "speaker" stumbles through live-coding and things that don't compile because he forgot punctuation, you're in for a treat. Alternatively, that laptop works just as well as a means of distraction from the disaster you accidentally walked into.

Languages: Scala, with a touch of Haskell and Scheme

Secondary: Fun with Parsing

This talk will take a step back and look at parsing as an abstract field. We will walk through the conceptual weeds that lead us to various algorithms and implementations, ideas both good and bad, until we finally find ourselves rethinking things with an exciting new frontier algorithm: derivative parsing. This talk is less about functional programming and more about "cool algorithms and shiny fun problems".

We're going to cover a lot of conceptual ground here. If it works the way I hope, you should all come away with a pretty solid understanding of every parsing algorithm in existence. If it doesn't work, uh… you may just come away very very confused through no fault of your own. Which will it be? Let's find out together!

Languages: Whiteboard