{"id":22636128,"url":"https://github.com/47degrees/scala-exercises-v2-deck","last_synced_at":"2025-04-16T03:47:05.729Z","repository":{"id":148139325,"uuid":"52745527","full_name":"47degrees/scala-exercises-v2-deck","owner":"47degrees","description":"Scala Exercises V2 Slides for Deckset","archived":false,"fork":false,"pushed_at":"2016-08-15T21:38:29.000Z","size":17171,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":61,"default_branch":"master","last_synced_at":"2025-03-29T04:46:30.584Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/47degrees.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-02-28T21:33:21.000Z","updated_at":"2020-03-16T12:22:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"72aea60e-6dc4-41eb-848e-433e9f94b8b8","html_url":"https://github.com/47degrees/scala-exercises-v2-deck","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/47degrees%2Fscala-exercises-v2-deck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/47degrees%2Fscala-exercises-v2-deck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/47degrees%2Fscala-exercises-v2-deck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/47degrees%2Fscala-exercises-v2-deck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/47degrees","download_url":"https://codeload.github.com/47degrees/scala-exercises-v2-deck/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249192345,"owners_count":21227766,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-09T03:18:24.084Z","updated_at":"2025-04-16T03:47:05.714Z","avatar_url":"https://github.com/47degrees.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"build-lists: true\nfooter: Scala Exercises @raulraja @47deg *V2*\nslidenumbers: true\n\n![inline](assets/logo_light_v1.png)\n\nscala-exercises.org\n\n---\n\n*What is it?*\n\nA browser tool to learn __Scala__ and its coolest __libs__\n\n---\n\n*A bit of History*\n\n- @rafaparadela JS POC for the @47deg labs\n- V1 Went Live on March 2nd, 2015\n- Focused on porting Scala Koans to the web\n- Social component\n\n---\n\n*V1 Limitations*\n\n- Serverless\n- \"Evaluation\" constrained to exact string matches\n- Can't track user progress across devices\n- Can't parse or evaluate more complex exercises\n\n---\n\n*V1 Stats*\n\n- *63K* sessions\n- *40%* Returning\n- *180* PRs\n- *50* Contributors\n- *1* section completed per visit\n\n---\n\n*V2 Stats*\n\n- Launched July 1st\n- +3K Users\n- +200 PRs closed\n- +110K Evaluations so far\n- Typelevel Project\n\n---\n\n# What's new in **V2**?\n\n---\n\n*Libs at a glance*\n\n![inline](assets/home_blur.png)\n\n---\n\n*Overall Progress*\n\n![inline](assets/overall_progress.png)\n\n---\n\n*Lib Progress*\n\n![inline](assets/section_progress.png)\n\n---\n\nWrite Exercises *with Code!*\n\n![inline](assets/section_convention_01.png)\n\n---\n\nWrite Exercises *with Code!*\n\n![inline fit](assets/section_convention_02.png)\n\n---\n\nWrite Exercises *with Code!*\n\n![inline fit](assets/section_convention_03.png)\n\n---\n\nWrite Exercises *with Code!*\n\n![inline fit](assets/section_convention_04.png)\n\n---\n\nWrite Exercises *with Code!*\n\n*Real evaluation of exercises*\n\n![inline](assets/cats.mov)\n\n---\n\n*Contributors are properly credited*\n\n![inline](assets/contributors.mov)\n\n---\n\n*Exercises Compiler Architecture*\n\n![inline](assets/graph_01.png)\n\n---\n\n*Technologies*\n\n- **Client** [ScalaJS, Cats]\n- **Server** [Play, Cats, Doobie, Monix]\n- **Evaluator** [Http4s, Cats, Circe, Coursier]\n\n---\n\n*Client Architecture*\n\n![inline](assets/client.png)\n\n---\n\n*Backend Architecture*\n\n![inline](assets/coproduct01.png)\n\n---\n\n*Backend Architecture*\n\n![inline](assets/coproduct02.png)\n\n---\n\n*Backend Architecture*\n\n![inline](assets/coproduct03.png)\n\n---\n\n*Backend Architecture*\n\n![inline](assets/coproduct04.png)\n\n---\n\n*Backend Architecture*\n\n![inline](assets/coproduct05.png)\n\n---\n\n*Remote Evaluation*\n\nRequest\n\n```json\n{  \n   \"resolvers\":[  \n      \"https://oss.sonatype.org/content/repositories/releases\"\n   ],\n   \"dependencies\":[  \n      {  \n         \"groupId\":\"org.typelevel\",\n         \"artifactId\":\"cats-core_2.11\",\n         \"version\":\"0.4.1\"\n      }\n   ],\n   \"code\":\"{import cats._; Monad[Id].pure(42)}\"\n}\n```\n\n---\n\n*Remote Evaluation*\n\nResponse\n\n```json\n{\n  \"msg\": \"Ok\",\n  \"value\": \"42\",\n  \"valueType\": \"java.lang.Integer\",\n  \"compilationInfos\": {}\n}    \n```\n\n---\n\n*Remote Evaluation*\n\nResponse\n\n```json\n{\n  \"msg\": \"Compilation Error\",\n  \"value\": null,\n  \"valueType\": null,\n  \"compilationInfos\": {\n    \"ERROR\": [\n      {\n        \"message\": \"value x is not a member of cats.Monad[cats.Id]\",\n        \"pos\": {\n          \"start\": 165,\n          \"point\": 165,\n          \"end\": 165\n        }\n      }\n    ]\n  }\n}\n```\n\n---\n\n**New libs coming soon...**\n\n- ![inline](assets/doobie.png) doobie \u003e _a pure functional JDBC layer for Scala_\n\n- ![inline](assets/scalacheck.png) scalacheck \u003e _Property-based testing for Scala_\n\n- ![inline](assets/fpis.png) fpis \u003e _Functional Programming in Scala (Red Book)_\n\n- ![inline](assets/circe.png) circe \u003e _JSON library for Scala_\n\n- ![inline](assets/fetch.png) fetch \u003e _Simple \u0026 Efficient data access for Scala_\n\n--- \n\n*Many ways to contribute*\n\n- Write exercises for your library (Template available)\n- Write exercises for libs you are using or learning about\n- Improve Documentation\n- Improve Evaluator Security\n- Fix bugs\n\n--- \n\n*Actively working on...*\n\n- Improved evaluation exercises\n- Support for block style exercises (Ex : Implement a type class)\n- Docs, contribution guide...\n- Line errors\n\n--- \n\n*What would be coming next?*\n\n- Allow Github organizations \n- Display Platform, Section and Exercise Statistics for repo owners\n- Export / Import / Run Github Gists\n- Support other Exercises Format (tut)\n- Any ideas?\n\n---\n\n*Thanks!*\n\n[@raulraja](https://twitter.com/raulraja)\n\n[@47deg](https://twitter.com/47deg)\n\nGithub : https://github.com/scala-exercises\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F47degrees%2Fscala-exercises-v2-deck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F47degrees%2Fscala-exercises-v2-deck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F47degrees%2Fscala-exercises-v2-deck/lists"}