• The Clojure library "flc" and the ideas that shaped it

    At this meetup Johan Lodin (https://github.com/jolod) will release his library "flc". It is a library based on his presentation last year on state management using functional life cycles, after getting some requests to actually use the presented code. (This presentation will be very different from last years presentation though.) He won't focus too much on how the library is used; rather the focus will be on the ideas that shaped it. In particular, "flc" does not really have a system per se, and is instead built on functions that compose to add behavior making it very extensible. The result is code that is shorter than the equivalent "component" and "integrant" (two popular libraries solving the same problem, using protocols and multimethods, respectively), but more importantly, without any built-in support in "flc" you can write third-party libraries to handle - logging, - async start, - exception handling during start and/or, - exception handling during stop, - etc. It can even be a drop-in replacement for plumatic's graph library (although with different performance characteristics), thanks to its openness and "compositional extensibility". Prior knowledge of Clojure is beneficial, but not required; after all, it's just functions, lists, and maps! The doors open at 6 pm for mingle and food, and the presentation starts 30 minutes later. Thanks to HiQ for sponsoring this event!

  • Smart Testing with a functional approach (foss-north Community Day event)

    Chalmers University of Technology

    A session on Testing & Functional programming Schedule 14:30 - Doors open 14:50 - Welcome to the event 15:00 - John Hughes: Building on developers' intuitions 16:00 - Oskar Wickström: Property-Based Testing The Ugly Parts 17:00 - Pause and mingle 17:30 - Alejandro Russo: DraGen, a new generator of random data to use with QuickCheck 18:30 - More mingling 19:00 - Thanks for today 1ˢᵗ talk by John Hughes, Co-Designer Of Haskell and QuickCheck Bio: John Hughes has been a functional programming enthusiast for more than thirty years, at the Universities of Oxford, Glasgow, and since 1992 Chalmers University in Gothenburg, Sweden. He served on the Haskell design committee, co-chairing the committee for Haskell 98, and is the author of more than 100 papers, including "Why Functional Programming Matters", one of the classics of the area. With Koen Claessen, he created QuickCheck, the most popular testing tool among Haskell programmers, and in 2006 he founded Quviq to commercialise the technology using Erlang Abstract: Property-based testing is increasingly popular, yet the properties that developers write are not always effective at revealing faults. Developers often don't notice this, because it’s impractical to inspect all the generated tests. But they DO have intuitions for tests they would like to run. Many try to generalize these into properties, but this works poorly. In this talk, I’ll show another way to use those intuitions to build effective properties cheaply. I'll also show new features in Haskell QuickCheck that support this way of working --- 2ᶮᵈ talk by Oskar Wickström, content creator of Haskell at Work and designer of the Open Source screencast editor Komposition Bio: After some years of musical education, Oskar Wickström began his journey into the world of software. He’s currently doing remote work in Haskell, and in his spare time, he creates screencasts at https://haskell-at-work.com/. Among the technical topics that interest Oskar are functional programming, systems design, web technology, and programming languages Abstract: Property-based testing has been praised and explored in both functional and object-oriented programming communities. Despite the papers and talks that tell inspiring stories of curious bugs being found by random tests, it can be hard to see how it applies to your day-to-day work. How do you go beyond testing small pure functions? In this talk we'll look at some techniques that you can use to test the "ugly" parts of your system, with real-world examples from Komposition, a screencast video editor written in Haskell --- 3ʳᵈ talk by Alejandro Russo, Professor at Chalmers University of Technology Bio: His research focus on protecting confidentiality of data when manipulated by untrusted software components, i.e., software written by someone else. For that, he has been applying a wide-range of rigorous programming languages techniques and authored software solutions to build secure systems for the programming languages Haskell, Python, and JavaScript Abstract: In QuickCheck (or, more generally, random testing), it is challenging to control random data generators’ distributions—specially when it comes to user-defined algebraic data types (ADT). In this talk, we adapt results from an area of mathematics known as branching processes, and show how they help to analytically predict (at compile-time) the expected number of generated constructors, even in the presence of mutually recursive or composite ADTs. Using our probabilistic formulas, we design heuristics capable of automatically adjusting probabilities in order to synthesize generators which distributions are aligned with users’ demands. We provide a Haskell implementation of our mechanism in a tool called and perform case studies with real-world applications. When generating random values, our synthesized QuickCheck generators show improvements in code coverage when compared with those automatically derived by state-of-the-art tool.

  • All about monads, and Phocate: A monadic parser in and for PHP

    Our last meetup on Advent of Code was really appreciated by those who participated, so we will try the same format again. We start with Samuel Ytterbrink presenting Phocate, a monadic parser written in PHP which parses PHP. After the 15 minute presentation, we split into three groups. Each group has a focus and while the group has a prepared leader the discussion is driven by everyone's participation. * Group 1 is lead by Samuel himself and goes deeper into Phocate and his experience using monadic code in PHP. * Group 2 is lead by Jean-Louis Giordano and is an introduction to monads for those new to the concept or have no prior experience of using monads themselves. * Group 3 is lead by Johan Lodin and focuses on the monad abstraction itself and are for those who are comfortable using monads. * (Group 4 is lead by no one and focuses on mingling!) This event is hosted by SpeedLedger AB in Nordstan. The company goal is to reduce the anxiety and pains involved in running a small business and uses Scala in their products. See you there!

  • Lightning talk and Advent of Code


    It's soon that time of year: time for the advent of code that is! https://adventofcode.com/ Advent of code is a series of puzzles being released each day, the perfect occasion to learn a new language or practice some new techniques! So let's meet, split into groups and try to solve one or several of the puzzles perhaps in different languages, and we can take a round to compare & discuss results in the end! But before that, we can take some time for some lightning talks so that people that would rather come for the talks & mingle get something to talk about :) Here is a proposed schedule: 17:30 - 18:30: Mingle (food and drinks) 18:30 - 18:50: Lightning talk: Quick look at TypeScript 18:50 - 19:00: Mingle & split into groups 19:00 - 20:00: Try to solve some advent of code puzzles 20:00 - 20:30: Compare & discuss results Zimpler will be sponsoring foods and drinks. See you there!

  • Functional thinking: two refactoring exercises in Purescript and Haskell

    Seal Software - Contract Discovery and Analytics

    Let's kick off a new season of Got.Lambda meetups with two talks, by Johan Lodin (github.com/jolod) and Magnus Therning (github.com/magthe). The speakers will show how to (re)design functional programs in Purescript and Haskell respectively, by taking advantage of the features of the two languages. Johan's talk : Polymorphism and "abstract base class" in PureScript. I will walk through a small refactoring I did in PureScript. The result is similar to an abstract base class in a typical OO language, but I will show how it differs and what those differences imply. Magnus' talk: After a Python meetup on the Gilded Rose Refactoring Kata I found some inspiration and sat down to do it, using the same techniques, but in Haskell. My goal is to redo it (at least most of it), live in front of the audience. --- Logistics --- Bring a laptop with a working Haskell and/or Purescript dev environment if you want to follow along! The hosting company will provide some food and drink. Call or whatsapp Marco [masked]) if either door is closed.

  • Functional life cycles for state management during interactive development

    In this presentation Johan Lodin will walk through the process of refactoring `component` into a library using nothing but functions as abstractions. In 2014 Stuart Sierra released `component`--a library to manage state during interactive development. It solved a problem that many craved a solution for, but not everyone agrees on the design choices made in `component`, and this spawned a class of new libraries (see https://github.com/stuartsierra/component/wiki/Related-Work). This presentation can be seen as one of them. I will make a quick introduction to `component`, but you might get even more out of this meetup if you have watched Stuart Sierra's presentation first: https://www.youtube.com/watch?v=13cmHf_kt-Q. But the presentation is not really about solving the state management problem. It's more a story of how you can design things if you fully embrace functions as your primary tool, so I aim for this presentation to be interesting to any programmer in a dynamic language with first-class functions and immutable data structures.

  • Advent of Code Retro (Beginner friendly!)

    Let's have a beginner friendly and open workshop to go through some of the recent Advent of Code puzzles! Advent of Code is a series of small puzzles to solve, one per day during the days leading up to Christmas. You can find them here: http://adventofcode.com/ You can try to solve some of them before the meetup, and we'll go through some interesting ones together and try to learn from each other! Zimpler will be sponsoring, this time we'll see if we can find some healthier alternative to pizza :) Bring your laptop!

  • Lightning Talks Evening


    Let's have a series of shorter presentations! Let's have a handful of 10 min presentations, if you'd like to volunteer for a short one please state in the comments section! We will have recording equipment, but recording will be opt-in. Zimpler will be hosting with the usual Pizzas and Drinks! WARNING: we will host at our NEW Zimpler office! For the ones used to the previous office the entrance is on the other side of the building. Talks: George, a platform for creating and learning (Terje Dahl) Building Micro-Services with Haskell (Marco Zocca)

  • Robert Virding on Lisp Flavoured Erlang and the BEAM

    Chalmers Innovation Stena Center

    Robert Virding (Co-inventor of Erlang) will present LFE (or Lisp Flavoured Erlang), a lisp syntax front-end to the Erlang compiler! This will be the occasion to look into how languages on the BEAM (Erlang Virtual Machine) work, and get some insight on how to implement languages on the BEAM. Zimpler will be sponsoring soft drinks and Pizza as usual!

  • Algebraic Effects - an alternative to Monads

    TimeEdit AB

    Dan Rosén will be giving a talk on Algebraic effects at this meetup based on the paper "Type Directed Compilation of Row-Typed Algebraic Effects" by Daan Leijen. TimeEdit is hosting this meetup! For who ever is wondering, algebraic effects are an alternative to monads for modeling side-effects (e.g. input/output, state, or exceptions) in an otherwise pure functional language. The paper can be read online here: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/algeff.pdf We thought it might interest some of you as we have a few slots left. Sorry about the late notice! You can find more details about the meetup here: https://www.meetup.com/preview/Papers-We-Love-Gothenburg/events/243458363 p.s. I've added this meetup here following Jean-Louis advice for the people who aren't on PWL. You need not RSVP here if you've already RSVPd on the PWL meetup :)