Scale By The Bay 2019: Justin Heyes-Jones, A Gentle Introduction to Comonads

preview_player
Показать описание
Aimed at programmers with some Scala experience that are interested in pure functional programming using the Cats library. The talk begins with an introduction to type classes and how they are implemented in Scala. Next we will look at Show, Functor, Monad and finally the Comonad type class, and finally some practical examples of how you can use Comonads in your own programs.

Justin Heyes-Jones
Software Developer, YoppWorks
Justin is a Scala and pure fp fanatic
Рекомендации по теме
Комментарии
Автор

Awesome talk for anyone getting into functional programming and looking for stuff to delve into to find out more - this guy - got me to formalize much of the ideas JUST by watching how he approached problem solving at IGG, where my untamed raw and unspoiled talent (haha) needed a direction, I had the great pleasure to learn by watching & working with him and getting to reopen the box of worms of domain driven design, the java world and scala world, it all directly lead from how he built and applied code server side.

In any case, I found his implementation of conway's game of life in this video lovely and succinct and enjoyed the question at the end and answer with regard to redundant data. I believe the power of functional programming in general through is not in how efficient it may be in terms of cpu usage, ram usage, duplication of data, (there are always in-effeciences when you get away from asm and even with how you approach a problem at any level, when we have to deal with abstractions, stop 'moving the cogs of the machine' and instead 'describe to the machine', its a price you pay even in c++), after all category theory has its own inherit inefficiencies which give way in favor of providing abstractions and a way to implement them to large problems at scale that can be broken down and applied to (say akka), to be able to describe the underlining problem set and arrive at the most generically applied and widest subset of features that allow you to express sufficiently that core, or focus, of a problem, its down to the developer to be able to realize this correctly and create a structure (as in imperative development too, so nothing changes there) that is itself sufficient to the task at hand with the resources available and try and minimize waste. I find it works well in terms of CPU usage too, how data is accessed in related sets and optimizations on the compiler and craftly thinking of how you approach your class's.

But to be honest for many new dev's it still scares the b'jaysus out of em. Took me (still taking me) a while to get the hang of it, still find myself falling into hold habbits, I think to properly appreciate all this gotta be bigger picture in your head with ability to zoom down.

It would be great justin if you could whip up another RaidBoss or docker cluster for your next presentation to demonstrate application of say, the image blurring idea, across a network of machines and databases to do some large image processing (i got a few terabytes of cats :D dont ask) and blur them out, show the resource usage of the machines, the network usage, the concepts of akka, etc coupled with the general use of functional and DDD and the benefits compared to say, something traditional and linear. The benefits of this style of development are not felt only at the 'developer desk level' but right they way down to operations where we like to see those cpu's ticking over and ram utilized and network lights blinking meaning users are being served and money's being made quite efficiently. (or CERN is looking at the last particle collision)

Nice talk Justin! as usual, my TLTR but I listened to all your TLTL :d

do more talks!

ivanmalone