• Scala Summer Camp #2: FP for Java programmers

    Coworking Rynek Główny 28

    Scala Summer Camp is back! It's a series of 3h long functional programming workshops in July, August, and September. #2: Functional Programming for Java Programmers --- If you have ever found yourself late at night debugging some impossible bug that "shouldn't have happened", only to find out that it was all about some obscure global state change, come join us and see what FP has to offer. During this workshop, you will learn how to deal with your worst enemies: shared mutable state and code you can't trust. You will do a set of exercises that focus on dealing with these problems using Java whenever possible and Scala in more advanced cases. You will learn the two fundamental tools of functional programming: pure functions and immutable values. This event is open for all programmers that know the basics of OOP in Java. Scala knowledge is not required. We will introduce & use only the very basic syntax constructs. Requirements: - your own laptop, - git, IntelliJ, JDK 8+, Scala 2.13 and sbt 1.2.8 installed. Agenda: 1. What is a function? 2. Exercise: Imperative vs Declarative 3. Functions in Scala 4. Exercise: Functions in Scala 5. Coding imperatively 6. Pure function: imperative vs functional 7. Exercise: Refactoring to a pure function 8. Pure functions and clean code 9. Exercise: Pure or impure? 10. Using Scala to write pure functions 11. Testing pure functions 12. Exercise: Testing pure functions 13. Mutability is dangerous 14. Exercise: Getting burnt by mutability 15. Shared mutable state 16. Dealing with the moving parts 17. Building our intuitions about immutability 18. Exercise: Immutable String API 19. Purely functional approach to the shared mutable state 20. Exercise: Practicing immutable slicing and appending 21. Exercise: Purely functional approach to the shared mutable state About your instructor: Michał Płachta (https://michalplachta.com) --- Polyglot programmer & functional programming enthusiast who loves the human component in software projects. He speaks at conferences, runs workshops & organizes meetups to help others get better at delivering maintainable software. About Scala Summer Camp --- Scala Summer Camp was initiated in 2017. Its main objective is to popularize techniques that lead to more maintainable software. It aims to attract coders at each level of experience. This year we are planning to host several workshops on different topics. Here's a list of topics that we want to cover: - Using Functional State in Actors (23.07, 20 participants), - Refactoring Imperative to Functional (this workshop), - Abstracting over IO, - Consistency using ZIO STM, - Simplifying services using Service Mesh, - Optimizing services using recursion schemes & IO. They will all be held during workweek afternoons. Please keep an eye out for invitations, because the number of places is limited.

    3
  • Scala Summer Camp #1: Using Functional State in Actors

    Ocado Polska Sp z o.o.

    Scala Summer Camp is back! It's a series of 3h long functional programming workshops in July, August, and September. #1: Using Functional State in Actors --- During this workshop, you will move the logic from actors into pure functions. You will see the benefits of the logic implemented in a composable, side-effect-free way. During refactoring, you will also learn how to use the state monad. The workshop is based on a project that keeps all of the business logic inside actors. Our goal will be to refactor actors into a monad state. The changes will make the application more testable and comprehensible. This event is open for all beginner-level Scala programmers. Requirements: - your own laptop, - sbt installed, - git installed. Internet connectivity, pizza, and drinks will be provided thanks to our host & sponsor: Ocado Technology. About your instructor: Krzysztof Otrębski (https://twitter.com/kotrebski) --- Krzysztof is a software developer with 10 years of professional experience. Having spent many years on Java programming and problem-solving, he has developed useful tools that make a programmer’s life easier. He is also a founder of a few open-source projects. About Scala Summer Camp --- Scala Summer Camp was initiated in 2017. Its main objective is to popularize techniques that lead to more maintainable software. It aims to attract coders at each level of experience. This year we are planning to host several workshops on different topics. Here's a list of topics that we want to cover: - Using Functional State in Actors (this workshop), - Refactoring Imperative to Functional, - Abstracting over IO, - Consistency using ZIO STM, - Simplifying services using Service Mesh, - Optimizing services using recursion schemes & IO. They will all be held during workweek afternoons. Please keep an eye out for invitations, because the number of places is limited.

    8
  • Metals 101 & A short journey through types in Scala

    Talk #1: "Metals 101 – not only for music enthusiasts" by Tomasz Godzik Abstract Currently, most Scala developers use Intellij Idea as their main IDE, which is not used as much for most other programming languages. This can create additional barriers for people who want to learn Scala and for those that want to use something else. Metals is a Scala language server, which adds additional features to such varied and battle tested editors like Vim, Emacs, VS Code, Atom and Sublime Text. In this talk I will describe what Metals exactly is and why I think it can be useful for a lot of Scala developers. Bio Tomasz is one of the main Metals maintainers and works in close cooperation with Scala Center to improve Metals so that it can become a valuable tool for the Scala community. Mainly a Scala developer with a tooling background, he sharpened his skills trying to improve tooling for one of the largest Scala codebases in the world. Talk #2: "A short journey through types in Scala (+ some tidbits about Dotty)" by Hubert Słojewski Abstract At the begining, a small recap of the Scala Type System. Then, I am going to show examples in the REPL and discuss various types: intersection, union, singleton, literal, existential, path-dependent and projection. Some ot them are going to change in Scala 3 - that’s a part of the presentation too. You will also have a chance to get familiar with type and context bounds, variance, kinds and a couple more things... See you there! Bio An enthusiast of functional programming who despises nulls and throws, and on the other hand respects reactive systems and the actor model. _____________ Sponsors VirtusLab is the founding sponsor of Kraków Scala User Group.

    2
  • Context Buddy & Streaming pipelines using Apache Kafka

    Talk #1: "Context Buddy: the tool that knows your code better than you" by Krzysztof Romanowski Abstract 'git blame' is my best friend but I often find it too crude. Meaningful changes can be deeply buried and even with the correct commit in hand it is hard to see it in the proper context. I knew we can do better. I started by lifting history to token-level ("who added this parameter to that method?"). Later, the time came for types and implicits and that was just the beginning. Meet Context Buddy, the tool that grasps project history and connects it to the code. It lives in your IDE and with few clicks gives you a list of people to talk to, issues and reviews to look at, and more! Bio Krzysztof is Head of Dev & Scala Tooling @ VirtusLab where he has spent endless hours debugging and fixing Scala IDE, SBT, IntelliJ, and even the Scala compiler itself. For over 5 years he has been creating tooling for projects containing millions of lines of Scala source code. Organizer of sphere.it conference and the Kotlin and Scala user groups in Kraków. Talk #2: "Achieving production-ready streaming pipelines with a few lines of Scala code and a Kafka cluster" by Mateusz Owczarek Abstract Apache Kafka has emerged itself as the world's most popular data streaming platform backbone. Only recently, a new flavour of a stream processing has been introduced named Kafka Streams. Could a lightweight library replace the battle-scarred distributed processing engines like Apache Spark or Flink? Can we live in the world of no separate processing cluster in production? In this talk, I will shortly describe the foundational concepts behind Apache Kafka, how Kafka Streams works underneath the covers, the hard parts of stream processing and how Kafka Streams may be the solution for those. Bio Mateusz is a Scala developer at AVSystem with 4 years of experience in commercial software development. Kafka enthusiast, currently working on a generic monitoring engine project and raising money for the Skoda Scala. _____________ Sponsors VirtusLab is the founding sponsor of Kraków Scala User Group.

    2
  • A journey into safer and cleaner code in Scala with real-life examples

    Talk #1: "A journey into safer and cleaner code in Scala with real-life examples" by Paweł Kołodziejczyk Abstract In this presentation I will try to show how safe and clean code can significantly reduce the risk of failures in our applications. I will discuss compile time vs runtime errors (mainly using examples that I or my teammates had to deal with) and demonstrate some tips & tricks that I find helpful. Bio Paweł is a computer science passionate interested in functional programming and distributed systems, using Scala since 2015. He always tries to leave things better than he founds them. Currently supporting creation of Cloud-Native applications and migration existing systems into cloud. Talk #2: "A Server is Just a Function: An Introduction to http4s" by Jakub Kozłowski Abstract If you’re going to write a modern web service, you have a wide range of frameworks and libraries to choose from. One of them is http4s, a functional library for writing HTTP services and clients in Scala. I’m going to show you why you should consider it for your next application, for reasons including but not limited to: type safe request/response models that are uniform between client and server; resource-safe servers, response/request bodies, and streaming; and framework-agnostic testing. Bio A young Scala hAkker who spends his days writing code, running and lifting in the late evenings. In his free time, if he has any, Jakub explores his other interests, which include coffee, playing bass and watching outstanding TV series. _____________ Sponsors VirtusLab is the founding sponsor of Kraków Scala User Group.

    3
  • Trait-based web services with Scala.js and Udash

    Metaforma Cafe

    Hello folks! We have two great speakers straight from the AVSystem who wants to share with us their experiences with Scala.js and their own web framework Udash as also co-sponsor our next meetup. Talk #1: "Scala.js on production: towards Udash 1.0" by Dawid Dworak Abstract Scala.js (https://www.scala-js.org/) enabled frontend application development using Scala, providing both a familiar feeling of typesafe development and more sane runtime semantics to the - often dreaded by Scala developers - client-side. Udash (https://udash.io) is an open-source Scala framework we have developed and have been successfully using on production at AVSystem for over 3 years. It’s the Swiss Army Knife for Scala.js development, with utilities such as reactive data bindings or typesafe RPCs - all built in pure Scala. In this talk, you will see real-life examples of full-stack web applications built with Udash and learn the features of the ecosystem and the framework. You will also learn about the issues we have run into and the ongoing developments as we’re approaching the first public stable release. Bio Dawid is a software developer with 4 years of professional Scala experience. The believer in multi-paradigm languages designed to express ideas in an elegant and type-safe way. Keen open-source contributor, Udash Framework maintainer. Currently leading a team focused on monitoring engine development, previously worked on a large-scale device and IoT management at AVSystem and mobile location at Google. _______________________________________________________________________________________ Talk #2: "Building trait-based web services with Udash REST" by Roman Janusz Abstract Udash REST lets you define REST endpoints with plain Scala traits, customized with annotations. On the surface, this looks very similar to already well-established solutions from Java world, e.g. JAX-RS. However, we think that when redone in Scala most of its Java downsides can be avoided, primarily thanks to type classes and macro-based compile-time reflection instead of runtime reflection. The presentation will describe how Udash REST strives for type safety and seamless developer experience. Bio I'm a Scala enthusiast interested mostly in type systems, metaprogramming, functional programming and distributed systems. I've been writing and teaching Scala at AVSystem for about 5 years now. I've also done some open source work: silencer plugin for scalac, HOCON plugin for IntelliJ and our own company's open source projects, Udash Framework among them. _____________ Sponsors AVSystem is co-sponsor of the March meetup VirtusLab is the founding sponsor of Kraków Scala User Group.

  • Numeric Programming with Spire & State vs. Stateful Actor

    Using the opportunity of Lambda Days (http://www.lambdadays.org/lambdadays2019/) happening in February in Krakow, we managed to convince two fantastic speakers to come and share some of their experience with Scala community in Krakow. Talk #1: “Numeric Programming with Spire” by Lars Hupel Abstract Numeric programming is a notoriously difficult topic. For number crunching, e.g. solving systems of linear equations, we need raw performance. However, using floating-point numbers may lead to inaccurate results. On top of that, as functional programmers, we’d really like to abstract over concrete number types, which is where abstract algebra comes into play. This interplay between abstract and concrete, and the fact that everything needs to run on finite hardware, is what makes good library support necessary for writing fast & correct programs. Spire is such a library in the Typelevel Scala ecosystem. This talk will be an introduction to Spire, showcasing the ‘number tower’, real-ish numbers and how to obey the law. Bio Lars (https://twitter.com/larsr_h) is a consultant in Munich, Germany. He has been using Scala for quite a while now, and is known as one of the founders of the Typelevel initiative which is dedicated to providing principled, type-driven Scala libraries. He also talks about Haskell and Isabelle a lot. More info --> https://lars.hupel.info Talk #2: “State vs. Stateful Actor” by Krzysiek Otrębski Abstract During this talk I will show you how we can move the logic from actors into a monad state. We will see the benefits of the logic implemented in composable, side-effect-free way. The talk is based on a project that keeps all of the business logic inside actors. Our goal is to refactor actors into a monad state. The changes will make the application more testable and comprehensible. Bio Krzysztof (https://twitter.com/kotrebski) is a software developer with 10 years of professional experience. Having spent many years on Java programming and problem solving, he has developed useful tools that make a programmer’s life easier. He is also a founder of a few open-source projects. _____________ Sponsors VirtusLab is the founding sponsor of Kraków Scala User Group.

  • λ: Streaming with FS2 // Sync considered unethical

    Welcome in 2019! We hope that you had great holidays and some of your New Year's resolutions include λs, because the first meetup of the year is all about functional programming! We invited two guest speakers, who will present their approach to some of the hottest Scala FP topics. 1. "Stream or not to Stream? FS2 is the answer" (Łukasz Byczyński) Streams are often underestimated and skipped as possible solutions. In many cases, we created much more complex solutions than their streams counterpart. Why? It's hard to answer, but in this presentation, I would like to tell you a story about how we started to use FS2, without sacrificing purity and code readability. (https://github.com/functional-streams-for-scala/fs2) 2. "Sync considered unethical" (Tomek Kogut) Scala over the past few years has become more and more inclined towards the pure FP. Most of the techniques and concepts are coming from the Haskell programming language. Some of those are already considered obsolete, some are being adjusted to what Scala is and some new might be just heading our way to show up during 2019 Scala conferences. Let's try to look where all of this have led us. Compare it to some of the works done in real world Haskell. We'll see if it brought us any closer to the liberation from the von Neumann paradigm. Last but not least we'll try to answer the question: are we any better than our colleagues doing plain old imperative programming? About our speakers: Łukasz Byczyński (https://twitter.com/lukaszbyczynski) I started as coder since from I get my first 8-bit computer - C64. It was a long journey for me, from a machine assembly code to the pure functional constructs. Right now, I'm passionate about designing pure architectures with reasonable costs. I'm a part of the team responsible for build the platform for implementing machine learning algorithms in Adform. Tomek Kogut (https://twitter.com/almendar) Technical Lead in Adform’s research department. He gained his programming experience from creating low-level kernel modules in C / C ++ through telecommunications systems written in enterprise Java to ETL big data pipelines. His favorite programming language since 2011 is Scala. He likes and appreciates the functional approach to programming, but tries to keep an eye on the efficiency of the solutions he creates. In everyday work in Adform he builds with his team the best platform for implementing machine learning algorithms. --- As always there will be some beer, contests and JetBrains' licenses to give away! See you in Metaforma!

    5
  • Decentralised applications using ipfs and libp2p

    This month we are going back to the Barka Alrina and will have a special guest coming to Kraków. Jan Pustelnik will take us to the truly decentralized world. Abstract Cloud or so-called serverless is just an evolution of the traditional client-server model. But what about applications that do not require any server? Yes, it's not just possible, but even very easy with ipfs and libp2p. In this talk, I want to discuss decentralized applications, basic tools for creating them and typical problems they solve. Bio TBA https://twitter.com/gosubpl As Always there will be some beer, contests and JetBrains' licenses to give away!

    2
  • Trip into Reactive System with Lagom & Practical Reactive Streams with Monix

    Forklog - Crypto Cowork In Krakow

    Hi all! I'm happy to announce you that we have two speakers for our next meetup: Krzysztof Borowski from VirtusLab and Jacek Kunicki from SoftwareMill. Talk #1 Krzysztof Borowski "Short Trip into Reactive System space with Lagom" Abstract I want to invite you on a short trip around a few popular recently spots. We will visit the rapidly developing space of Reactive Systems and mighty Domain Driven Design region assisted by our new friend Lagom. Alongside visiting some interesting places like Reactive Programming marketplace, CQRS and Event Sourcing library, Lightbend factory, our friend Lagom will perform for us showing some nice skills. Sounds interesting? Bio Krzysiek is a Scala programmer @ Virtuslab. Believes that simplicity is the key to modern software development. Passionate about all technologies and ideas that make programmer life brighter and more interesting. Born with a love of mountains, singing, and exciting new experiences. Talk #2 Jacek Kunicki "Practical Reactive Streams with Monix" Abstract Stream processing is a hot topic today and it’s easy to get lost among all the possibilities. In this live coding session, we will explore the Reactive Streams approach used by the Monix project - one of the Scala implementations of the Reactive Streams concepts. Bio I'm a passionate software engineer living in the JVM land - mainly, but not limited to. I also tend to play with electronics and hardware. When sharing my knowledge, I always keep in mind that a working example is worth a thousand words.

    18