Difference between revisions of "NL-FP dag 2018"
Bas Lijnse (talk | contribs) |
|||
(50 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | Looking for [[NL-FP dag 2019]]? Not all search engines find the page yet... | ||
+ | |||
The Dutch Functional Programming Day is an annual gathering of researchers, | The Dutch Functional Programming Day is an annual gathering of researchers, | ||
students, and practitioners sharing a common interest in functional | students, and practitioners sharing a common interest in functional | ||
Line 7: | Line 9: | ||
The NL-FP day 2018 takes place on '''Friday, January 5, 2018''' at the | The NL-FP day 2018 takes place on '''Friday, January 5, 2018''' at the | ||
− | Walter Bos Complex of the [https://www.belastingdienst.nl/ | + | Walter Bos Complex of the [https://www.belastingdienst.nl/ Dutch Tax and Customs Administration ] in Apeldoorn. |
== Location == | == Location == | ||
− | The FP | + | The FP-day takes place in De Kern at the Walter Bos Complex of the Dutch Tax and Customs Administration in Apeldoorn. |
[http://www.openstreetmap.org/node/2686463671 OpenStreetMaps] | [http://www.openstreetmap.org/node/2686463671 OpenStreetMaps] | ||
− | [https://goo.gl/maps/ | + | [https://goo.gl/maps/6vT58KA5R2E2 Google Maps] |
== How to get there == | == How to get there == | ||
− | + | The main entrance of the Walterboscomplex is located at J.F. Kennedylaan 8, Apeldoorn. | |
+ | Participant need to report and identify themselves at the reception in order to receive visitor passes. | ||
+ | Please wait for people from the organization to pick you up and escort you to De Kern where the presentations will be. | ||
+ | |||
+ | By public transport: | ||
+ | |||
+ | Every 15 minutes from Apeldoorn station to bus stop Belastingkantoor (in about 10 minutes), using bus number 2 (Apenheul) or 6 (Rijkskantoren). | ||
+ | |||
+ | By car (in Dutch): | ||
+ | |||
+ | Vanaf Amersfoort (A1): Afslag nr. 19 (Hoenderloo/Apeldoorn). Rechtsaf richting Apeldoorn. Bij 1e verkeerslicht linksaf (Laan van Spitsbergen). Bij de rotonde 1e afslag rechtsaf (John F. Kennedylaan). Aan uw linkerhand ziet u het Walterboscomplex. U kunt het complex betreden via de hoofdentree (de 2e ingang met slagbomen). | ||
+ | |||
+ | Vanaf Deventer (A1): Afslag nr. 19 (Ede/Hoenderloo). Linksaf richting Apeldoorn. Bij 1e verkeerslicht linksaf (Laan van Spitsbergen). Bij de rotonde 1e afslag rechtsaf (John F. Kennedylaan). Aan uw linkerhand ziet u het Walterboscomplex. U kunt het complex betreden via de hoofdentree (de 2e ingang met slagbomen). | ||
+ | |||
+ | Vanaf Zwolle (A50): Afslag nr. 25 (Apeldoorn- Noord). Rechtsaf richting Apeldoorn. Bij 3e verkeerslicht rechtsaf (Anklaarseweg) vervolgens 1e verkeerslicht linksaf (Zwolseweg gaat over in Jachtlaan). Op groot kruispunt bij De Naald rechtdoor. Op rotonde (bij AGOVV voetbalterrein) 3e afslag rechtsaf slaan (John F. Kennedylaan). Aan uw linkerhand ziet u het Walterboscomplex. U kunt het complex betreden via de hoofdentree (de 2e ingang met slagbomen). | ||
+ | |||
+ | Vanaf Arnhem (A50): Afslag nr. 22 (Apeldoorn- Zuid/ Beekbergen). Weg volgen door Beekbergen. Na passeren viaduct bij de rotonde derde afslag rechtsaf en weg vervolgen (Laan van Westenenk, overgaand in Laan van Spitsbergen) tot aan de 2e rotonde, 1e afslag rechtsaf (John F. Kennedylaan). Aan uw linkerhand ziet u het Walterboscomplex. U kunt het complex betreden via de hoofdentree (de 2e ingang met slagbomen). | ||
− | == Registration | + | == Registration and deadline == |
Please note that to the nature of the location, registration in advance is required. | Please note that to the nature of the location, registration in advance is required. | ||
As well as matching identification (passport, driver's license, or similar) before entering the venue! | As well as matching identification (passport, driver's license, or similar) before entering the venue! | ||
Photography and/or setting up a local WiFi network is explicitly not allowed. | Photography and/or setting up a local WiFi network is explicitly not allowed. | ||
+ | There will be a photographer present during the day. | ||
Please register by sending an email to [mailto:a.van.weelden@belastingdienst.nl a.van.weelden@belastingdienst.nl] including | Please register by sending an email to [mailto:a.van.weelden@belastingdienst.nl a.van.weelden@belastingdienst.nl] including | ||
− | * your name as shown on passport or driver's license | + | * your name, as shown on passport or driver's license |
− | * your affiliation, if any, | + | * your affiliation, if any |
− | * whether you want to give a talk. | + | * whether you want pizza, vegetarian pizza, or no pizza. |
+ | * whether you want to give a talk | ||
+ | |||
+ | There are no costs for anything this year, as it is fully sponsored by the Dutch Tax and Customs Administration. | ||
− | The registration deadline | + | The registration deadline was December 17th, as we need a list of participants for the security staff. |
+ | Thank you for registering early, since we also need this to order the right number of badges, drinks and pizza's. | ||
[[NL-FP_dag_2018/Participants|Participants]] | [[NL-FP_dag_2018/Participants|Participants]] | ||
Line 38: | Line 61: | ||
== Program == | == Program == | ||
− | + | * 9:30 Registration | |
+ | * 10:15 Welcome and a few words from our sponsor | ||
+ | * 10:30 Type-Directed Diffing of Structured Data | ||
+ | * 11:00 Break | ||
+ | * 11:30 Task Oriented Pearl: Distributed Blockchain Applications | ||
+ | * 12:00 Type Directed Interactive Workflow Modelling | ||
+ | * 12:30 Lunch | ||
+ | * 14:00 FPGA design using CλaSH | ||
+ | * 14:30 Type-safe Object-Relational Mapping | ||
+ | * 15:00 Break | ||
+ | * 15:30 Cloogle: a programming language search engine and its applications | ||
+ | * 16:00 Agile Law Execution using Domain Specific Languages and Software Factories | ||
+ | * 16:30 Organizing the next FP-day | ||
+ | * 16:45 Drinks | ||
+ | * 17:30 - 19:00 Pizza's | ||
+ | |||
+ | More details will follow. | ||
== Dinner == | == Dinner == | ||
Line 47: | Line 86: | ||
== Contact == | == Contact == | ||
− | * Betsy Pepels | + | * Betsy Pepels [mailto:ejh.pepels@belastingdienst.nl at work] |
− | * Arjen van Weelden [mailto:a.van.weelden@belastingdienst.nl at work] or [mailto:arjenvanweelden@gmail.com at home] | + | * Arjen van Weelden [mailto:a.van.weelden@belastingdienst.nl at work] or [mailto:arjenvanweelden@gmail.com at home] if your think that your e-mail did not reach me via my work address, which happens sometimes. |
== Talks == | == Talks == | ||
− | === | + | The following people already requested to present a talk: |
+ | |||
+ | ==== Camil Staps - Cloogle: a programming language search engine and its applications ==== | ||
+ | |||
+ | Cloogle (<nowiki>https://cloogle.org</nowiki>) is a search engine for the Clean language, | ||
+ | similar to Haskell's Hoogle. The modular setup makes it fairly easy to | ||
+ | be reused in other programs, like Integrated Development Environments | ||
+ | (IDEs) and editor plugins. In this talk we give a general overview of | ||
+ | the system and show how it evolved from a web interface to grep into its | ||
+ | current state. We also discuss the things we are currently working on: | ||
+ | client-side search and editor integration. | ||
+ | |||
+ | [[Media:Staps-cloogle-handout.pdf]] | ||
+ | |||
+ | ==== Victor Miraldo - Type-Directed Diffing of Structured Data ==== | ||
+ | |||
+ | The Unix diff utility that compares lines of text is used pervasively | ||
+ | by version control systems. Yet certain changes to a program may | ||
+ | be dificult to describe accurately in terms of modifications to individual lines of code. | ||
+ | As a result, observing changes at such a fixed | ||
+ | granularity may lead to unnecessary con icts between difierent edits. | ||
+ | This talk discusses a generic representation for describing transformations between algebraic data types. | ||
+ | These representations can be used to give a more accurate account of modifications | ||
+ | made to algebraic data structures – and the abstract syntax trees of | ||
+ | computer programs in particular – as opposed to only considering | ||
+ | modifications between their textual representations. | ||
+ | |||
+ | [[Media:Miraldo-fpdag2018.pdf]] | ||
+ | |||
+ | ==== Jan Kuper - FPGA design using CλaSH ==== | ||
+ | |||
+ | It is widely recognized that mainstream hardware design languages (VHDL, Verilog) have poor abstraction mechanisms, turning FPGA design into a cumbersome activity. Most high level synthesis languages only partially solve this problem, mostly because they take a sequential perspective. CλaSH, on the other hand, starts from a mathematical perspective exploiting the abstraction mechanisms of the functional programming language Haskell, including polymorphism, type derivation, and higher order functions. Since every CλaSH specification is an executable Haskell program, testing and debugging can be done at top level. | ||
+ | Further advantages of a mathematical approach to hardware design are the possibility to transformations on a given design to get an optimal space-time performance. | ||
+ | We will illustrate the approach with several examples. | ||
+ | |||
+ | ==== Roel van Dijk - Type-safe Object-Relational Mapping ==== | ||
+ | |||
+ | At LumiGuide we use the PostgreSQL database to store the objects that are important in our bicycle detection and guidance systems. We choose PostgreSQL mainly for its good ACID guarantees and reliable storage. The relational interface of PostgreSQL is great for writing efficient queries but not so great to interface with using general purpose programming languages such as Haskell. These languages use hierarchical structures as data types (i.e. objects) which don't mix well with relations. We want to use an interface oriented around objects but with PostgreSQL as a backend providing reliable storage and efficient query execution. We don't want this interface to introduce data corruptions and inconsistencies so a type-safe API is desired. We developed the lumi-store Haskell library which provides a type-safe, object oriented interface to a PostgreSQL database while also providing a type-safe relational query interface. In this talk I touch on the API of this library and discuss some interesting implementation details. | ||
+ | |||
+ | [[Media:LumiGuide-FP-Dag-2018.zip]] | ||
+ | |||
+ | ==== Gert Veldhuijzen van Zanten - Agile Law Execution using Domain Specific Languages and Software Factories ==== | ||
+ | |||
+ | At the Dutch Tax Authority we apply a model driven approach to software engineering. | ||
+ | The approach aims to make models that directly describe the actual legislation that is being executed and to provide early feedback using model checks and model execution. | ||
+ | We develop domein specific languages including editors, static type checkers, interpreters and code generators. | ||
+ | In the talk we will present our vision on agile law execution using domain specific languages and demo our specification environment. | ||
+ | |||
+ | ==== Mart Lubbers - Task Oriented Pearl: Distributed Blockchain Applications ==== | ||
+ | |||
+ | Blockchain calculations are very suitable to implement in a functional programming language. For example, mining a new block is a oneliner in Clean. | ||
+ | However, distribution, validation and interfacing is less trivial to implement. | ||
+ | Task Oriented Programming (TOP) is a novel programming paradigm implemented as an EDSL in Clean that supports collaboration of parties in a distributed setting. The basic building blocks are tasks and shared data sources | ||
+ | and multiuser web applications are generated from the specification. We show | ||
+ | that it is natural to implement distributed blockchain applications in a TOP | ||
+ | language such as iTasks. | ||
+ | |||
+ | [[Media:Lubbers-presentation.pdf]] | ||
+ | |||
+ | ==== Tim Steenvoorden - Type Directed Interactive Workflow Modelling ==== | ||
+ | |||
+ | Workflow management systems tend to be complicated, containing many basic elements to design and construct workflows. | ||
+ | Also, coming from a workflow specification to an application usable by the end user is a lot of effort. | ||
+ | Novel ways to generate this kind of applications, like the functional programming oriented iTasks system, are promising, but still too complicated to use for non-programmers. | ||
+ | We present a graphical design tool aiding in specifying work and data flows in a straight forward and modular way, suitable for domain experts and workflow designers.Our tool discerns itself from others by incorporating the information needed to perform a task, thus combining workflows and dataflows into a single concept we call _task flows_. | ||
+ | These flows have a visual representation inspired by Petri nets as well as a formal language representation inspired by natural language. | ||
+ | Because all information in our workflows is typed, we are able to generate full blown web applications by using the iTasks system as a backend. | ||
− | + | [[Media:Steenvoorden-fpdag-slides.pdf]] | |
== Past NL-FP Days == | == Past NL-FP Days == |
Latest revision as of 13:18, 3 December 2018
Looking for NL-FP dag 2019? Not all search engines find the page yet...
The Dutch Functional Programming Day is an annual gathering of researchers, students, and practitioners sharing a common interest in functional programming. The day features talks that cover the latest advances in research, teaching, and applications in the functional programming area. Coffee and lunch breaks provide ample opportunity for networking with your colleagues and meeting new people. Experts and newcomers to the field are equally welcome.
The NL-FP day 2018 takes place on Friday, January 5, 2018 at the Walter Bos Complex of the Dutch Tax and Customs Administration in Apeldoorn.
Location
The FP-day takes place in De Kern at the Walter Bos Complex of the Dutch Tax and Customs Administration in Apeldoorn.
How to get there
The main entrance of the Walterboscomplex is located at J.F. Kennedylaan 8, Apeldoorn. Participant need to report and identify themselves at the reception in order to receive visitor passes. Please wait for people from the organization to pick you up and escort you to De Kern where the presentations will be.
By public transport:
Every 15 minutes from Apeldoorn station to bus stop Belastingkantoor (in about 10 minutes), using bus number 2 (Apenheul) or 6 (Rijkskantoren).
By car (in Dutch):
Vanaf Amersfoort (A1): Afslag nr. 19 (Hoenderloo/Apeldoorn). Rechtsaf richting Apeldoorn. Bij 1e verkeerslicht linksaf (Laan van Spitsbergen). Bij de rotonde 1e afslag rechtsaf (John F. Kennedylaan). Aan uw linkerhand ziet u het Walterboscomplex. U kunt het complex betreden via de hoofdentree (de 2e ingang met slagbomen).
Vanaf Deventer (A1): Afslag nr. 19 (Ede/Hoenderloo). Linksaf richting Apeldoorn. Bij 1e verkeerslicht linksaf (Laan van Spitsbergen). Bij de rotonde 1e afslag rechtsaf (John F. Kennedylaan). Aan uw linkerhand ziet u het Walterboscomplex. U kunt het complex betreden via de hoofdentree (de 2e ingang met slagbomen).
Vanaf Zwolle (A50): Afslag nr. 25 (Apeldoorn- Noord). Rechtsaf richting Apeldoorn. Bij 3e verkeerslicht rechtsaf (Anklaarseweg) vervolgens 1e verkeerslicht linksaf (Zwolseweg gaat over in Jachtlaan). Op groot kruispunt bij De Naald rechtdoor. Op rotonde (bij AGOVV voetbalterrein) 3e afslag rechtsaf slaan (John F. Kennedylaan). Aan uw linkerhand ziet u het Walterboscomplex. U kunt het complex betreden via de hoofdentree (de 2e ingang met slagbomen).
Vanaf Arnhem (A50): Afslag nr. 22 (Apeldoorn- Zuid/ Beekbergen). Weg volgen door Beekbergen. Na passeren viaduct bij de rotonde derde afslag rechtsaf en weg vervolgen (Laan van Westenenk, overgaand in Laan van Spitsbergen) tot aan de 2e rotonde, 1e afslag rechtsaf (John F. Kennedylaan). Aan uw linkerhand ziet u het Walterboscomplex. U kunt het complex betreden via de hoofdentree (de 2e ingang met slagbomen).
Registration and deadline
Please note that to the nature of the location, registration in advance is required. As well as matching identification (passport, driver's license, or similar) before entering the venue! Photography and/or setting up a local WiFi network is explicitly not allowed. There will be a photographer present during the day.
Please register by sending an email to a.van.weelden@belastingdienst.nl including
- your name, as shown on passport or driver's license
- your affiliation, if any
- whether you want pizza, vegetarian pizza, or no pizza.
- whether you want to give a talk
There are no costs for anything this year, as it is fully sponsored by the Dutch Tax and Customs Administration.
The registration deadline was December 17th, as we need a list of participants for the security staff. Thank you for registering early, since we also need this to order the right number of badges, drinks and pizza's.
Program
- 9:30 Registration
- 10:15 Welcome and a few words from our sponsor
- 10:30 Type-Directed Diffing of Structured Data
- 11:00 Break
- 11:30 Task Oriented Pearl: Distributed Blockchain Applications
- 12:00 Type Directed Interactive Workflow Modelling
- 12:30 Lunch
- 14:00 FPGA design using CλaSH
- 14:30 Type-safe Object-Relational Mapping
- 15:00 Break
- 15:30 Cloogle: a programming language search engine and its applications
- 16:00 Agile Law Execution using Domain Specific Languages and Software Factories
- 16:30 Organizing the next FP-day
- 16:45 Drinks
- 17:30 - 19:00 Pizza's
More details will follow.
Dinner
A dinner (pizza's) and drinks will be provided free of charge at the end of the day at the same location. Given that registration is mandatory this time, we'll assume that you stay around for this unless you specify otherwise.
Contact
- Betsy Pepels at work
- Arjen van Weelden at work or at home if your think that your e-mail did not reach me via my work address, which happens sometimes.
Talks
The following people already requested to present a talk:
Camil Staps - Cloogle: a programming language search engine and its applications
Cloogle (https://cloogle.org) is a search engine for the Clean language, similar to Haskell's Hoogle. The modular setup makes it fairly easy to be reused in other programs, like Integrated Development Environments (IDEs) and editor plugins. In this talk we give a general overview of the system and show how it evolved from a web interface to grep into its current state. We also discuss the things we are currently working on: client-side search and editor integration.
Media:Staps-cloogle-handout.pdf
Victor Miraldo - Type-Directed Diffing of Structured Data
The Unix diff utility that compares lines of text is used pervasively by version control systems. Yet certain changes to a program may be dificult to describe accurately in terms of modifications to individual lines of code. As a result, observing changes at such a fixed granularity may lead to unnecessary con icts between difierent edits. This talk discusses a generic representation for describing transformations between algebraic data types. These representations can be used to give a more accurate account of modifications made to algebraic data structures – and the abstract syntax trees of computer programs in particular – as opposed to only considering modifications between their textual representations.
Jan Kuper - FPGA design using CλaSH
It is widely recognized that mainstream hardware design languages (VHDL, Verilog) have poor abstraction mechanisms, turning FPGA design into a cumbersome activity. Most high level synthesis languages only partially solve this problem, mostly because they take a sequential perspective. CλaSH, on the other hand, starts from a mathematical perspective exploiting the abstraction mechanisms of the functional programming language Haskell, including polymorphism, type derivation, and higher order functions. Since every CλaSH specification is an executable Haskell program, testing and debugging can be done at top level. Further advantages of a mathematical approach to hardware design are the possibility to transformations on a given design to get an optimal space-time performance. We will illustrate the approach with several examples.
Roel van Dijk - Type-safe Object-Relational Mapping
At LumiGuide we use the PostgreSQL database to store the objects that are important in our bicycle detection and guidance systems. We choose PostgreSQL mainly for its good ACID guarantees and reliable storage. The relational interface of PostgreSQL is great for writing efficient queries but not so great to interface with using general purpose programming languages such as Haskell. These languages use hierarchical structures as data types (i.e. objects) which don't mix well with relations. We want to use an interface oriented around objects but with PostgreSQL as a backend providing reliable storage and efficient query execution. We don't want this interface to introduce data corruptions and inconsistencies so a type-safe API is desired. We developed the lumi-store Haskell library which provides a type-safe, object oriented interface to a PostgreSQL database while also providing a type-safe relational query interface. In this talk I touch on the API of this library and discuss some interesting implementation details.
Media:LumiGuide-FP-Dag-2018.zip
Gert Veldhuijzen van Zanten - Agile Law Execution using Domain Specific Languages and Software Factories
At the Dutch Tax Authority we apply a model driven approach to software engineering. The approach aims to make models that directly describe the actual legislation that is being executed and to provide early feedback using model checks and model execution. We develop domein specific languages including editors, static type checkers, interpreters and code generators. In the talk we will present our vision on agile law execution using domain specific languages and demo our specification environment.
Mart Lubbers - Task Oriented Pearl: Distributed Blockchain Applications
Blockchain calculations are very suitable to implement in a functional programming language. For example, mining a new block is a oneliner in Clean. However, distribution, validation and interfacing is less trivial to implement. Task Oriented Programming (TOP) is a novel programming paradigm implemented as an EDSL in Clean that supports collaboration of parties in a distributed setting. The basic building blocks are tasks and shared data sources and multiuser web applications are generated from the specification. We show that it is natural to implement distributed blockchain applications in a TOP language such as iTasks.
Media:Lubbers-presentation.pdf
Tim Steenvoorden - Type Directed Interactive Workflow Modelling
Workflow management systems tend to be complicated, containing many basic elements to design and construct workflows. Also, coming from a workflow specification to an application usable by the end user is a lot of effort. Novel ways to generate this kind of applications, like the functional programming oriented iTasks system, are promising, but still too complicated to use for non-programmers. We present a graphical design tool aiding in specifying work and data flows in a straight forward and modular way, suitable for domain experts and workflow designers.Our tool discerns itself from others by incorporating the information needed to perform a task, thus combining workflows and dataflows into a single concept we call _task flows_. These flows have a visual representation inspired by Petri nets as well as a formal language representation inspired by natural language. Because all information in our workflows is typed, we are able to generate full blown web applications by using the iTasks system as a backend.
Media:Steenvoorden-fpdag-slides.pdf
Past NL-FP Days
- 2017 Radboud Universiteit Nijmegen
- 2016 Universiteit Utrecht
- 2015 Universiteit van Twente
- 2014 Universiteit van Amsterdam
- 2013 Radboud Universiteit Nijmegen
- 2012 Universiteit Utrecht
- 2011 Universiteit Twente, Enschede
- 2010 Radboud Universiteit Nijmegen
- 2009 Technische Universiteit Eindhoven
- 2008 Open Universiteit, Utrecht
- 2007 Marine, Amsterdam
- 2006 Hogeschool Avans, Breda
- 2005 Rijksuniversiteit Groningen
- 2004 Universiteit Twente, Enschede
- 2003 Universiteit Utrecht
- 2002 Katholieke Universiteit Nijmegen
- 2001 Technische Universiteit Delft
- 2000 Technische Universiteit Eindhoven
- 1999 Hogeschool Breda
- 1998 RijksUniversiteit Leiden
- 1997 Hogeschool Leeuwarden
- 1996 Universiteit van Amsterdam
- 1995 Technische Universiteit Twente, Enschede
- 1994 Rijksuniversiteit Utrecht
- 1993 Katholieke Universiteit Nijmegen