GithubHelp home page GithubHelp logo

octaplexsys / fp-to-the-min Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jdegoes/fp-to-the-min

0.0 1.0 0.0 136 KB

Code for FP to the Min talk at Scala in the City Conference.

License: Apache License 2.0

Scala 55.84% Shell 29.36% JavaScript 14.01% CSS 0.78%

fp-to-the-min's Introduction

Introduction

This is the repository for the closing keynote of Scala in the City Conference, held online May 28, 2020, and organized by Signify Technology.

FP to the Min

In 2018, John A. De Goes did a live coding session for the Functional Programming Group entitled, FP to the Max. Watched by tens of thousands of Scala developers, the video helped many understand the benefits of the total, deterministic functions. Yet, due to its use of type classes, higher-kinded types, and implicits, many developers were wondering: is this style of programming practical?

In this highly anticipated sequel to FP to the Max, John shows the sweet spot for functional programming in Scala: a magical place that provides most of the benefits of FP to the Max, but in a tiny fraction of the time and effort, with no jargon, no boilerplate, and no ceremony. This is the place that gets colleagues excited about using Scala and helps companies realize the full potential of the powerful programming language. Come discover how functional programming can help you be more productive and write better code that follows best practices, in a fraction of the time required by other approaches!

Agenda

  • Introduction
    • FP to the Max
      • Intro to FP
      • Benefits in the Large
      • Overkill?
    • FP to the Min
      • Skip the Intro
      • Deeper Benefits in the Large
      • Underkill?
  • FP to the Min
    • Domain Introduction
    • Challenge Review
      • Bug Reports
      • Feature Requests
    • Incremental Refactoring
      • Functional Effects
      • Areas
        • Error Management
        • Concurrency & Parallelism
        • Resource Management
        • Dependency Management
        • Testing
    • Review

The Source Code

The example code used during the presentation can be found in the fpmin subdirectory.

As a bonus, the original code from FP to the Max can be found inside the package fpmin.fpmax!

Challenges

The application is "working" but has a number of known bugs and pending feature requests.

Your mission, if you choose to accept it, is to fix the bugs and implement the feature requests!

Can you use the power of functional programming to complete this task, without:

  • Higher-kinded types
  • Functional type classes
  • Implicits
  • Scary jargon

Good luck!

Changes

  1. The application leaks file descriptors and eventually stops working.
  2. If some day's worth of data is missing, no statistics will ever be collected.
  3. If the application is sensitive to transient problems in the Github API.
  4. The application should download and aggregate data files in parallel.
  5. The application should support a timeout on file downloads so it doesn't hang forever.
  6. If the application is still downloading the files from a previous run, it should not start a new run.

fp-to-the-min's People

Contributors

jdegoes avatar loathwine avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.