Futurice Tech Weeklies: Recent Episodes

Futurice Tech Weeklies

Weekly event at Futurice where developers from all our offices in Finland, Sweden, Norway, Germany and UK are sharing their experience with various frameworks, languages, techniques, services and projects.

View Details

Having your website’s TLS/SSL certificate expire is not a good thing. Sometimes you might not pay enough attention and could miss a renewal deadline causing a lot of trouble for yourself and your users. It’s even worse if you have a lot of websites to manage as a hobby or in a professional setting.

Jae Lo Presti had a similar challenge. In this short TechWeeklies session, Jae takes you through the different solutions she considered, and why she decided to create her own solution in the end. The talk also includes a walkthrough of Jae’s fast and easy-to-deploy solution using vanilla Python that works correctly for the requirement. 

Presenter: Jae Lo Presti works as a software developer in Helsinki and is an active open-source contributor in her spare time.

View Details

Having your website’s TLS/SSL certificate expire is not a good thing. Sometimes you might not pay enough attention and could miss a renewal deadline causing a lot of trouble for yourself and your users. It’s even worse if you have a lot of websites to manage as a hobby or in a professional setting.

Jae Lo Presti had a similar challenge. In this short TechWeeklies session, Jae takes you through the different solutions she considered, and why she decided to create her own solution in the end. The talk also includes a walkthrough of Jae’s fast and easy-to-deploy solution using vanilla Python that works correctly for the requirement. 

Presenter: Jae Lo Presti works as a software developer in Helsinki and is an active open-source contributor in her spare time.

View Details

Property-based testing is for people who do not like to write unit tests. Instead of providing examples, you provide a fact that should hold true for any possible input, and let the test framework, fast-check in this case, generate random inputs for you.   In this live demo session, Jan shows how to use this for even more complex UI testing with a TodoMVC that uses React Hooks.     Presenter: Jan van Brügge

View Details

Property-based testing is for people who do not like to write unit tests. Instead of providing examples, you provide a fact that should hold true for any possible input, and let the test framework, fast-check in this case, generate random inputs for you.   In this live demo session, Jan shows how to use this for even more complex UI testing with a TodoMVC that uses React Hooks.     Presenter: Jan van Brügge

View Details

Many developers are interested in Security. Yet, they often seem to struggle to get security efforts into their product roadmaps. With security and development silos still very much present in the organisations, where do we start?   Worry no more! Luisa Emme has 3 tips for you that she shares in this talk, with some stories and anecdotes from her past experiences.   They have not only proven effective in introducing Developer-Driven Security in agile teams, but also been successful in influencing a DevSec culture in medium sized organisations.   Presenter: Luisa Emme

View Details

Many developers are interested in Security. Yet, they often seem to struggle to get security efforts into their product roadmaps. With security and development silos still very much present in the organisations, where do we start?   Worry no more! Luisa Emme has 3 tips for you that she shares in this talk, with some stories and anecdotes from her past experiences.   They have not only proven effective in introducing Developer-Driven Security in agile teams, but also been successful in influencing a DevSec culture in medium sized organisations.   Presenter: Luisa Emme

View Details

While many languages support laziness in some form, be it by explicit data types or generators, it is not one of the best understood features. In this live coding session, Jan shows you how to solve FizzBuzz using laziness and without any "x divides y" checks – first using Haskell, which is lazy by default, and then we will adapt the solution to work in other languages.   Presenter: Jan van Brügge

View Details

While many languages support laziness in some form, be it by explicit data types or generators, it is not one of the best understood features. In this live coding session, Jan shows you how to solve FizzBuzz using laziness and without any "x divides y" checks – first using Haskell, which is lazy by default, and then we will adapt the solution to work in other languages.   Presenter: Jan van Brügge

View Details

Juha-Matti Santala's (Juhis) personal website was built with Eleventy. And over time, he has added functionality and workflow improvements with Ghost Headless CMS and serverless Netlify Functions. It's as messy as real-life side-projects come and in this session he shares the details of the techstack, flow, and observations from using these different tools together to build a fast static website with an enjoyable blog-writing experience.

Presenter: Juha-Matti Santala

View Details

Juha-Matti Santala's (Juhis) personal website was built with Eleventy. And over time, he has added functionality and workflow improvements with Ghost Headless CMS and serverless Netlify Functions. It's as messy as real-life side-projects come and in this session he shares the details of the techstack, flow, and observations from using these different tools together to build a fast static website with an enjoyable blog-writing experience.

Presenter: Juha-Matti Santala

View Details

The modern de facto solution to identity management is OpenID Connect. OIDC and OAuth2 come with their own problems though. The intention of this session is to look at some of the problems these frameworks bring, to look at some alternatives to OpenID for identity in your applications and what kinds of cases they might be applicable in.    Presenter: Mikael Viitaniemi

View Details

The modern de facto solution to identity management is OpenID Connect. OIDC and OAuth2 come with their own problems though. The intention of this session is to look at some of the problems these frameworks bring, to look at some alternatives to OpenID for identity in your applications and what kinds of cases they might be applicable in.    Presenter: Mikael Viitaniemi

View Details

Many programming languages have collected a variety of features or idioms over the years.   For example, Python has List comprehensions. JavaScript and Kotlin have Optional chaining.  Both JavaScript and Rust have async/await. In GO, it is normal to check if err != nil among others.   But if you take a step back, the fact is that all those features are the same thing! This is the power of fundamental abstractions.

Presenter: Jan van Brügge

View Details

Many programming languages have collected a variety of features or idioms over the years.   For example, Python has List comprehensions. JavaScript and Kotlin have Optional chaining.  Both JavaScript and Rust have async/await. In GO, it is normal to check if err != nil among others.   But if you take a step back, the fact is that all those features are the same thing! This is the power of fundamental abstractions.

Presenter: Jan van Brügge

View Details

Lessons Learned from moving futuLog to Okta  

In 2020, we built futuLog, an internal tool to help us manage the office usage during the pandemic. With futuLog, employees can book a slot at the office to make sure they'll have space with the pandemic restrictions. 

We decided early on that eventually we want to open source futuLog. But making something open source takes more than just changing the repository to public. What use would futuLog be to others if it required Futurice infrastructure to actually run?   For instance, to build futuLog quickly we used playswarm, an internal environment that takes care of authentication and hosting. While the hosting part is easy, having single sign on for all Futurice employees is not.   So as a step towards open sourcing it, Jan spent the last month implementing and debugging the OpenID connect protocol that allows futuLog to talk to Okta and similar identity services directly. This talk is a collection of lessons learned in the journey that took Jan from knowing nothing about OpenID, to deploying it to production.

Presenter: Jan van Brügge

View Details

Lessons Learned from moving futuLog to Okta  

In 2020, we built futuLog, an internal tool to help us manage the office usage during the pandemic. With futuLog, employees can book a slot at the office to make sure they'll have space with the pandemic restrictions. 

We decided early on that eventually we want to open source futuLog. But making something open source takes more than just changing the repository to public. What use would futuLog be to others if it required Futurice infrastructure to actually run?   For instance, to build futuLog quickly we used playswarm, an internal environment that takes care of authentication and hosting. While the hosting part is easy, having single sign on for all Futurice employees is not.   So as a step towards open sourcing it, Jan spent the last month implementing and debugging the OpenID connect protocol that allows futuLog to talk to Okta and similar identity services directly. This talk is a collection of lessons learned in the journey that took Jan from knowing nothing about OpenID, to deploying it to production.

Presenter: Jan van Brügge

View Details

Serverless has become the buzzword of the recent years.

Most people think of Lambda when hearing Serverless. But Lambdas are literally just a tiny part in that field. Who would have thought that a tiny function goes big and become a crucial part of Software Development!

This talk reveals what you are capable of while using AWS Lambda, the Serverless Compute Service of Amazon. We will determine some architectural approaches such as Microservices, Monolith, or ETL/ELT, and try to answer whether you can do Machine Learning with Lambdas.   Presenter: John Nguyen

View Details

Serverless has become the buzzword of the recent years.

Most people think of Lambda when hearing Serverless. But Lambdas are literally just a tiny part in that field. Who would have thought that a tiny function goes big and become a crucial part of Software Development!

This talk reveals what you are capable of while using AWS Lambda, the Serverless Compute Service of Amazon. We will determine some architectural approaches such as Microservices, Monolith, or ETL/ELT, and try to answer whether you can do Machine Learning with Lambdas.   Presenter: John Nguyen

View Details

"Parse, don't validate" is an approach to modeling data such that it is impossible to construct without verifying the integrity of the data first. Thus when using such data, one can be sure that it is already in the correct shape and no further validation is necessary.

In short, this approach makes it explicit where your data gets refined. This blog by Alexis King uses examples in Haskell, mostly because the language has a short and concise syntax. To show that such an approach works in any other language too (albeit with a bit more boilerplate approach), Jan will also demonstrate it in Java.

Presenter: Jan van Brügge

View Details

"Parse, don't validate" is an approach to modeling data such that it is impossible to construct without verifying the integrity of the data first. Thus when using such data, one can be sure that it is already in the correct shape and no further validation is necessary.

In short, this approach makes it explicit where your data gets refined. This blog by Alexis King uses examples in Haskell, mostly because the language has a short and concise syntax. To show that such an approach works in any other language too (albeit with a bit more boilerplate approach), Jan will also demonstrate it in Java.

Presenter: Jan van Brügge

View Details

In this edition of Tech Weeklies, Olavi shares his learnings from creating and maintaining a Sailfish OS app for tracking working hours, called Working Hours Tracker. It was a project he started in 2014 and has been developing and maintaining it ever since. The most recent version of the app was released in February 2021.

At the time of starting this project, Olavi had been studying for a few years, and had little real world experience in software projects. As we all know, most of the learning happens at work or when doing some side projects. His limited experience and knowledge led to some of the interesting mistakes made during the project. This talk covers some of those mistakes and the lessons he learned from them.   Presenter: Olavi Haapala

View Details

In this edition of Tech Weeklies, Olavi shares his learnings from creating and maintaining a Sailfish OS app for tracking working hours, called Working Hours Tracker. It was a project he started in 2014 and has been developing and maintaining it ever since. The most recent version of the app was released in February 2021.

At the time of starting this project, Olavi had been studying for a few years, and had little real world experience in software projects. As we all know, most of the learning happens at work or when doing some side projects. His limited experience and knowledge led to some of the interesting mistakes made during the project. This talk covers some of those mistakes and the lessons he learned from them.   Presenter: Olavi Haapala

View Details

The creator of Node.js, Ryan Dahl, released a new shiny runtime for Javascript and TypeScript in 2018 called Deno. Release 1.0 finally came out in 2020, and eager developers flocked to use Deno in production. Or did they?

In this TechWeeklies talk, Minna briefly introduces the features and design aims of Deno. Then she addresses the obligatory question "how does it compare to Node?". The talk also includes a live coding demo to showcase how easy it is to use Deno for your daily ad-hoc scripting needs.   Presenter: Minna Niemi

View Details

The creator of Node.js, Ryan Dahl, released a new shiny runtime for Javascript and TypeScript in 2018 called Deno. Release 1.0 finally came out in 2020, and eager developers flocked to use Deno in production. Or did they?

In this TechWeeklies talk, Minna briefly introduces the features and design aims of Deno. Then she addresses the obligatory question "how does it compare to Node?". The talk also includes a live coding demo to showcase how easy it is to use Deno for your daily ad-hoc scripting needs.   Presenter: Minna Niemi

View Details

Getting a modern JS project from git to running in a terminal takes ages. There is the installation of dependencies, running the server, running the bundler, maybe a type-checker, the CSS pipeline. There are watchers watching watchers, and the whole thing makes both my head and your computer's fans spin. The setup is yet more complex once you start adding multiple projects in one codebase, when you think of Server-Side Rendering and so on.   This delay has a real impact on people being able to contribute to the codebase, especially when it comes to iterative UI work. Trying to make things faster in the current (by some definition) model hits diminishing returns, and takes active time and budget to do right. For example, over three years Fotis has reworked his current project's pipeline four times, and while it was faster each time, it still can be a challenge!   In this talk, Fotis tries a different approach. He will give you a brief tour of modern tools that rethink how dependencies are bundled in development, and the very real gains that they offer.   Presenter: Fotis Papadogeorgopoulos

View Details

Getting a modern JS project from git to running in a terminal takes ages. There is the installation of dependencies, running the server, running the bundler, maybe a type-checker, the CSS pipeline. There are watchers watching watchers, and the whole thing makes both my head and your computer's fans spin. The setup is yet more complex once you start adding multiple projects in one codebase, when you think of Server-Side Rendering and so on.   This delay has a real impact on people being able to contribute to the codebase, especially when it comes to iterative UI work. Trying to make things faster in the current (by some definition) model hits diminishing returns, and takes active time and budget to do right. For example, over three years Fotis has reworked his current project's pipeline four times, and while it was faster each time, it still can be a challenge!   In this talk, Fotis tries a different approach. He will give you a brief tour of modern tools that rethink how dependencies are bundled in development, and the very real gains that they offer.   Presenter: Fotis Papadogeorgopoulos

View Details

Some people suffer physically when they encounter something like parallax scrolling or horizontally scrolling text. It can cause them nausea, dizziness, or other symptoms that can last for hours. These people can turn the "reduce motion" settings ON from the system level. As a developer, you have tools to respect that setting.

In this talk, Eevis discusses why motion can trigger the symptoms mentioned above and what kind of animations can be problematic (this can be surprising for some!). She also shows you how to respect the user’s settings with the prefers-reduced-motion media feature.   Presenter: Eeva-Jonna Panula

View Details

Some people suffer physically when they encounter something like parallax scrolling or horizontally scrolling text. It can cause them nausea, dizziness, or other symptoms that can last for hours. These people can turn the "reduce motion" settings ON from the system level. As a developer, you have tools to respect that setting.

In this talk, Eevis discusses why motion can trigger the symptoms mentioned above and what kind of animations can be problematic (this can be surprising for some!). She also shows you how to respect the user’s settings with the prefers-reduced-motion media feature.   Presenter: Eeva-Jonna Panula

View Details

Error Boundary is a React component that catches JavaScript errors anywhere in their child component tree, which enables graceful handling of runtime errors and offers a way to recover from them. The way it is used makes it important to have it well-tested.

In this talk, Layla talks about what error boundaries are and why they are a valuable tool in your React toolbox. She also builds you an example of how to test those error boundaries with React Testing Library using Test-Driven Development.

Presenter: Layla Ouyang

View Details

Error Boundary is a React component that catches JavaScript errors anywhere in their child component tree, which enables graceful handling of runtime errors and offers a way to recover from them. The way it is used makes it important to have it well-tested.

In this talk, Layla talks about what error boundaries are and why they are a valuable tool in your React toolbox. She also builds you an example of how to test those error boundaries with React Testing Library using Test-Driven Development.

Presenter: Layla Ouyang

View Details

User-defined stylesheets allow users to make customizations to websites with CSS to better accommodate their needs and preferences. For example, users can add back removed focus styles or redefine how sticky elements behave on different zoom levels to help make sites more accessible, when they are otherwise less so.

In this talk, Fotis walks you through how to create and use user-styles and showcases an example of his own user-styles written for Duolingo's website.

Presenter: Fotis Papadogeorgopoulos

View Details

User-defined stylesheets allow users to make customizations to websites with CSS to better accommodate their needs and preferences. For example, users can add back removed focus styles or redefine how sticky elements behave on different zoom levels to help make sites more accessible, when they are otherwise less so.

In this talk, Fotis walks you through how to create and use user-styles and showcases an example of his own user-styles written for Duolingo's website.

Presenter: Fotis Papadogeorgopoulos

View Details

Observablehq.com is where you can create, collaborate, and learn with data — all in the browser. Observable increases data exploration and visualization by opening up the toolset, the skills, and the access to empower a diverse user community.

Tom is an Observable Ambassador and will give a whirlwind tour of the platform, including what features are useful for non-dataviz applications. Observablehq is built from the ground up around reactivity and thus offers the tightest development loop in the business. Furthermore, it pushes literate programming to the next level with the addition of interactivity. All-in-all, it's a new development paradigm with potential for significant productivity boosts.   Presenter: Tom Larkworthy

View Details

Observablehq.com is where you can create, collaborate, and learn with data — all in the browser. Observable increases data exploration and visualization by opening up the toolset, the skills, and the access to empower a diverse user community.

Tom is an Observable Ambassador and will give a whirlwind tour of the platform, including what features are useful for non-dataviz applications. Observablehq is built from the ground up around reactivity and thus offers the tightest development loop in the business. Furthermore, it pushes literate programming to the next level with the addition of interactivity. All-in-all, it's a new development paradigm with potential for significant productivity boosts.   Presenter: Tom Larkworthy

View Details

Progressive Web Apps or PWAs are web applications that offer native-like functionality for mobile devices. Coined in 2015, PWAs share a few traits with modern web development like responsiveness, linkable and safe but add their own unique aspects with connectivity independence and re-engageability.   In this talk, Graham walks you through what PWAs are and how they are made. He also talks about the pros and cons you can weigh when you're making a decision between a native app and a PWA.   Presenter: Graham Daw

View Details

Progressive Web Apps or PWAs are web applications that offer native-like functionality for mobile devices. Coined in 2015, PWAs share a few traits with modern web development like responsiveness, linkable and safe but add their own unique aspects with connectivity independence and re-engageability.   In this talk, Graham walks you through what PWAs are and how they are made. He also talks about the pros and cons you can weigh when you're making a decision between a native app and a PWA.   Presenter: Graham Daw

View Details

When Juhis started blogging in 2013, he used to look up to other bloggers as authorities and definite experts on their fields. This led to a lot of "I don't know enough to write about this", "Someone has written this better already" and "I don't have anything to say" thoughts that self-censored a lot of his potential blog posts.   More recently, he's taken a different approach with blogs and talks: learning in public. By documenting his own learning journey and experimentations and sharing what he has learned about software development, he has ended up in a lot of great discussions with fellow developers. These discussions have further helped him become better at writing software.   In this talk, Juhis highlights how he approaches learning in public, shares inspirational moments of improvement with community and hopes to inspire you to start learning in public.   Presenter: Juha-Matti Santala (Juhis)

View Details

When Juhis started blogging in 2013, he used to look up to other bloggers as authorities and definite experts on their fields. This led to a lot of "I don't know enough to write about this", "Someone has written this better already" and "I don't have anything to say" thoughts that self-censored a lot of his potential blog posts.   More recently, he's taken a different approach with blogs and talks: learning in public. By documenting his own learning journey and experimentations and sharing what he has learned about software development, he has ended up in a lot of great discussions with fellow developers. These discussions have further helped him become better at writing software.   In this talk, Juhis highlights how he approaches learning in public, shares inspirational moments of improvement with community and hopes to inspire you to start learning in public.   Presenter: Juha-Matti Santala (Juhis)

View Details

In programming, everything is a trade-off. This first session of our Programming Language Theory series highlights how various languages differ from each other on multiple axes like programming paradigms, memory management etc. — and what kind of tradeoffs are made while designing programming languages.

Presenter: Jan van Brügge

View Details

In programming, everything is a trade-off. This first session of our Programming Language Theory series highlights how various languages differ from each other on multiple axes like programming paradigms, memory management etc. — and what kind of tradeoffs are made while designing programming languages.

Presenter: Jan van Brügge

View Details

"Hey Alexa, when does the tram 3 to Meilahti leave?"

Kha Nguyen built an application combining Amazon Alexa's voice assistant with Helsinki Regional Transport Authority's (HSL) data API to build functionality to know when specific buses and trams leave from near his home.

As you know, Amazon Alexa is a virtual assistant that can be programmed to make your life easier. Kha explains how Alexa works behind the scenes and how to use its interfaces to run custom Javascript code based on different voice commands and intents.

After this talk, you'll know the basics of building custom Alexa commands.

View Details

"Hey Alexa, when does the tram 3 to Meilahti leave?"

Kha Nguyen built an application combining Amazon Alexa's voice assistant with Helsinki Regional Transport Authority's (HSL) data API to build functionality to know when specific buses and trams leave from near his home.

As you know, Amazon Alexa is a virtual assistant that can be programmed to make your life easier. Kha explains how Alexa works behind the scenes and how to use its interfaces to run custom Javascript code based on different voice commands and intents.

After this talk, you'll know the basics of building custom Alexa commands.

View Details

Many projects these days do not use a traditional backend any more, but have moved their logic to FaaS (Function as a Service) like AWS Lambda.

The core idea is that you don’t have to manage a server, and instead you just upload code and it will be executed on some event. Normally AWS only supports Nodejs, Python and a few more languages for this service. But with custom runtimes, we can deploy any language!

This Tech Weeklies episode shows you how to write a stateless service (in our case a telegram bot) in Haskell and deploy it to AWS Lambda with Terraform.

Presenter: Jan van Brügge

View Details

Many projects these days do not use a traditional backend any more, but have moved their logic to FaaS (Function as a Service) like AWS Lambda.

The core idea is that you don’t have to manage a server, and instead you just upload code and it will be executed on some event. Normally AWS only supports Nodejs, Python and a few more languages for this service. But with custom runtimes, we can deploy any language!

This Tech Weeklies episode shows you how to write a stateless service (in our case a telegram bot) in Haskell and deploy it to AWS Lambda with Terraform.

Presenter: Jan van Brügge

View Details

If you have worked with GraphQL and React, you’ve probably used Apollo Client as the GraphQL client library. For those who aren't familiar with it, Apollo Client is a comprehensive GraphQL client library providing features for state management, caching, and data management in the frontend.

In July 2020, version 3.0 was released, and it brought some new features, especially to state management. This talk introduces some of these features.

Presenter: Eeva-Jonna Panula

View Details

If you have worked with GraphQL and React, you’ve probably used Apollo Client as the GraphQL client library. For those who aren't familiar with it, Apollo Client is a comprehensive GraphQL client library providing features for state management, caching, and data management in the frontend.

In July 2020, version 3.0 was released, and it brought some new features, especially to state management. This talk introduces some of these features.

Presenter: Eeva-Jonna Panula

View Details

In our last episode we talked about using a stream library. You understand a concept better if you implement it yourself. So we will build our own small streaming library in this live coding session.

Presenter: Jan van Brügge

View Details

In our last episode we talked about using a stream library.  You understand a concept better if you implement it yourself. So we will build our own small streaming library in this live coding session.

Watch the video.

Presenter: Jan van Brügge

View Details

Streams are a handy tool to structure your application with asynchronous execution in mind. The core idea is to model the dataflow as a stream where at runtime data can be emitted at any time.

In this talk we will first go over the basic usage of streams, then build our own small RxJS with that to see what the differences between hot and cold streams are.

Presenter: Jan van Brügge

View Details

Streams are a handy tool to structure your application with asynchronous execution in mind. The core idea is to model the dataflow as a stream where at runtime data can be emitted at any time.

In this talk we will first go over the basic usage of streams, then build our own small RxJS with that to see what the differences between hot and cold streams are.

Presenter: Jan van Brügge

View Details

Hacktoberfest is a month-long celebration of Open Source. The idea behind it is simple - create a minimum of 4 pull requests to open source repositories that are participating in the event. If you accomplish that goal, you get to choose a tee or plant trees.

This year was my second time participating, and I ended up being an (accidental) maintainer of an open-source repository. In this talk, I will introduce you to Hacktoberfest, and tell the story of Hacktoberfest 2020 from my perspective and share some learnings from this experience.

Presenter: Eeva-Jonna Panula, Developer

View Details

Hacktoberfest is a month-long celebration of Open Source. The idea behind it is simple - create a minimum of 4 pull requests to open source repositories that are participating in the event. If you accomplish that goal, you get to choose a tee or plant trees.

This year was my second time participating, and I ended up being an (accidental) maintainer of an open-source repository. In this talk, I will introduce you to Hacktoberfest, and tell the story of Hacktoberfest 2020 from my perspective and share some learnings from this experience.

Presenter: Eeva-Jonna Panula, Developer

View Details

Test with these simple unit tests, if you are feeling shame on a personal level or as a team member:

As a developer, I’m not ________ enough. As a team member, I’m not _______ enough.

If your mind auto-filled these for you with one or more words, this presentation is for you.   In this talk, we’ll be looking at non-technical terms like shame, guilt and scarcity and see how they might be manifesting in our own thoughts, habits and maybe even team practices. We’ll also be discussing how to live with thoughts and change our habits and team practices.   Presenter: Senja Jarva, Front-end Developer

View Details

Test with these simple unit tests, if you are feeling shame on a personal level or as a team member:

As a developer, I’m not ________ enough. As a team member, I’m not _______ enough.

If your mind auto-filled these for you with one or more words, this presentation is for you.   In this talk, we’ll be looking at non-technical terms like shame, guilt and scarcity and see how they might be manifesting in our own thoughts, habits and maybe even team practices. We’ll also be discussing how to live with thoughts and change our habits and team practices.   Presenter: Senja Jarva, Front-end Developer

View Details

Testing is hard. Testing asynchronous code is even harder. In this session, I will walk you through a few techniques on how to test (possibly async) code with random input data and which strategies you can use in your test suite to increase coverage, find more bugs while writing fewer tests.

Presenter: Jan van Brügge

View Details

Testing is hard. Testing asynchronous code is even harder. In this session, I will walk you through a few techniques on how to test (possibly async) code with random input data and which strategies you can use in your test suite to increase coverage, find more bugs while writing fewer tests.

Presenter: Jan van Brügge

View Details

We all consume media on a daily basis from a variety of sources. That is almost entirely unavoidable. This means that we place a level of trust in those that provide our news that the information supplied to us is truthful, reliable, and valid. Is that really the case though? (spoiler: the answer is no).

In light of the 2016 referendum on the UKs membership of the EU, I set out on a project to write a classifier that would be able to determine whether a news article in the British media has a pro-remain (in the EU) or pro-leave bias. I aimed to use the most modern data science tools at the time, which would surely give me the best results. Right? ...Right?

In the end, I built something that sucked, and I’m going to tell you about the journey of excitement, horror, pain, misery and finally acceptance that I went on while developing my models.  

Presenter: Rory How

View Details

We all consume media on a daily basis from a variety of sources. That is almost entirely unavoidable. This means that we place a level of trust in those that provide our news that the information supplied to us is truthful, reliable, and valid. Is that really the case though? (spoiler: the answer is no).

In light of the 2016 referendum on the UKs membership of the EU, I set out on a project to write a classifier that would be able to determine whether a news article in the British media has a pro-remain (in the EU) or pro-leave bias. I aimed to use the most modern data science tools at the time, which would surely give me the best results. Right? ...Right?

In the end, I built something that sucked, and I’m going to tell you about the journey of excitement, horror, pain, misery and finally acceptance that I went on while developing my models.  

Presenter: Rory How

View Details

There are a lot of similarities in the open source communities of software developers and the print-and-play communities of board game designers. I started designing my first table top game this summer and found my Python skills very valuable when I learned how to build a Python program that automates the creation of cards used in the game.   By automating the process, I can tweak game balance and test out different options by just modifying data and letting computers do what they are good at: scaling. In this talk I’ll talk about the print-and-play table top community and tell more about my Python script.   Presenter: Juha-Matti Santala

View Details

There are a lot of similarities in the open source communities of software developers and the print-and-play communities of board game designers. I started designing my first table top game this summer and found my Python skills very valuable when I learned how to build a Python program that automates the creation of cards used in the game.   By automating the process, I can tweak game balance and test out different options by just modifying data and letting computers do what they are good at: scaling. In this talk I’ll talk about the print-and-play table top community and tell more about my Python script.   Presenter: Juha-Matti Santala

View Details

Modern software development means building on existing foundations. You do not need to write your own binary search tree because there is already a library for that. But with these foundations being so important, how can we be sure that they are correct? After all, the more projects depend on a library, the worse would be the fallout for bugs, be it a semantic bug where it does not do the right thing or a security bug that might put your user’s data in jeopardy. Today’s answer to this problem is testing. But this has flaws. It is simply impossible to show the absence of bugs with tests, as they can only test a finite subset of the possible inputs. This is where theorem proving comes into play. We can verify key properties of our system not only for some inputs, but for all possible inputs.

In this talk I will start with the basics and show how you can get your feet wet with Isabelle/HOL, a theorem proving assistant developed by the Technical University of Munich. I will also show some more involved examples that are more interesting to prove correct. You do not need any knowledge in theorem proving or proving at all, but simple high school math is enough to follow this talk.   Presenter: Jan van Brügge

View Details

Modern software development means building on existing foundations. You do not need to write your own binary search tree because there is already a library for that. But with these foundations being so important, how can we be sure that they are correct? After all, the more projects depend on a library, the worse would be the fallout for bugs, be it a semantic bug where it does not do the right thing or a security bug that might put your user’s data in jeopardy. Today’s answer to this problem is testing. But this has flaws. It is simply impossible to show the absence of bugs with tests, as they can only test a finite subset of the possible inputs. This is where theorem proving comes into play. We can verify key properties of our system not only for some inputs, but for all possible inputs.

In this talk I will start with the basics and show how you can get your feet wet with Isabelle/HOL, a theorem proving assistant developed by the Technical University of Munich. I will also show some more involved examples that are more interesting to prove correct. You do not need any knowledge in theorem proving or proving at all, but simple high school math is enough to follow this talk.   Presenter: Jan van Brügge

View Details

In modern cloud-native development every second counts. Developers should be self-serving the tech they need and work in a seamless developer experience. How do you manage this without locking in into a PaaS like setup?

Humanitec is building the Continuous Delivery API. The tool helps you to achieve a PaaS like degree of automation on top of the tools you are using today. This webinar will show-case the future of CI/CD and is great for anyone interested in developer productivity, workflows or DevOps in general.

Presenter: Chris Stephenson

View Details

In modern cloud-native development every second counts. Developers should be self-serving the tech they need and work in a seamless developer experience. How do you manage this without locking in into a PaaS like setup?

Humanitec is building the Continuous Delivery API. The tool helps you to achieve a PaaS like degree of automation on top of the tools you are using today. This webinar will show-case the future of CI/CD and is great for anyone interested in developer productivity, workflows or DevOps in general.

Presenter: Chris Stephenson

View Details

When you meet a new, interesting person and get to know them, there are usually certain stages in the process. It’s more or less the same when you get to know any new, fascinating technology. If it is exciting and practical even after these stages, you could compare it to making a friend.

In this talk, I will tell about my journey getting to know GraphQL, and share things I have learned along the way, and things I enjoy about it.

Presenter: Eeva-Jonna Panula

View Details

When you meet a new, interesting person and get to know them, there are usually certain stages in the process. It’s more or less the same when you get to know any new, fascinating technology. If it is exciting and practical even after these stages, you could compare it to making a friend.

In this talk, I will tell about my journey getting to know GraphQL, and share things I have learned along the way, and things I enjoy about it.

Presenter: Eeva-Jonna Panula

View Details

Software development is often described as “craftsmanship”. What is craftsmanship? And does that mean software development and programming have something in common with, say, a more traditional craft like handicrafts (sewing, knitting, weaving, etc)?

In this presentation, I will talk about the meta level similarities between handicrafts and programming, and demonstrate that any crafter/maker has the essentials meta level skills of a programmer.

Presenter: Senja Jarva

View Details

Software development is often described as “craftsmanship”. What is craftsmanship? And does that mean software development and programming have something in common with, say, a more traditional craft like handicrafts (sewing, knitting, weaving, etc)?

In this presentation, I will talk about the meta level similarities between handicrafts and programming, and demonstrate that any crafter/maker has the essentials meta level skills of a programmer.

Presenter: Senja Jarva

View Details

React Hooks have been out for a while already and they have quickly become the new recommended way of handling component local state and side effects in React function components. Getting started with React hooks is quite straightforward, but the more you use them, the more you need to change the way you think about your components, especially when it comes to the useEffect hook. There are certain rules that you have to follow and certain pitfalls to avoid.

This presentation assumes you know the basics of React hooks and we will dive a bit deeper into how they can be used and how they should be used. In this presentation, I will explain the rules of hooks and how we messed up with those and I ended up wasting almost a month of my work time fixing the mess.    Presenter: Olavi Haapala

View Details

React Hooks have been out for a while already and they have quickly become the new recommended way of handling component local state and side effects in React function components. Getting started with React hooks is quite straightforward, but the more you use them, the more you need to change the way you think about your components, especially when it comes to the useEffect hook. There are certain rules that you have to follow and certain pitfalls to avoid.

This presentation assumes you know the basics of React hooks and we will dive a bit deeper into how they can be used and how they should be used. In this presentation, I will explain the rules of hooks and how we messed up with those and I ended up wasting almost a month of my work time fixing the mess.    Presenter: Olavi Haapala

View Details

Still remember mid March? Most people were still working at the office, and the national pastime was hoarding toilet paper and hand sanitizer? Me neither, seems a lifetime ago.

In the beginning of the lockdown, nobody had any idea how quickly the novel coronavirus was spreading in Finland. Many - including the Health Security Director of THL - were calling for an app to crowdsource symptom data from the general population, in the hopes that it could be used to track the spread of the epidemic. Futurice, in close collaboration with Helsingin Sanomat and medical experts, was one of those who answered the call. In this talk Jarno will go through the technical implementation of the resulting oiretutka.fi service.

Presenter: Jarno’s Oiretutka

View Details

Still remember mid March? Most people were still working at the office, and the national pastime was hoarding toilet paper and hand sanitizer? Me neither, seems a lifetime ago.

In the beginning of the lockdown, nobody had any idea how quickly the novel coronavirus was spreading in Finland. Many - including the Health Security Director of THL - were calling for an app to crowdsource symptom data from the general population, in the hopes that it could be used to track the spread of the epidemic. Futurice, in close collaboration with Helsingin Sanomat and medical experts, was one of those who answered the call. In this talk Jarno will go through the technical implementation of the resulting oiretutka.fi service.

Presenter: Jarno’s Oiretutka

View Details

Maybe you are familiar with using Content Delivery Neworks, or CDNs for short? Maybe you have even used them yourself? Or maybe this is all news to you?

Let’s have a talk where we look into CDNs under the hood. What are they, who are they, why should you use one (or maybe should not), and how do they work? The CDN landscape is also changing, so we’ll dive into that a bit.

And we’ll go through why you shouldn’t build one yourself.

Presenter: Jyrki Pulliainen

View Details

Maybe you are familiar with using Content Delivery Neworks, or CDNs for short? Maybe you have even used them yourself? Or maybe this is all news to you?

Let’s have a talk where we look into CDNs under the hood. What are they, who are they, why should you use one (or maybe should not), and how do they work? The CDN landscape is also changing, so we’ll dive into that a bit.

And we’ll go through why you shouldn’t build one yourself.

Presenter: Jyrki Pulliainen

View Details

Wikidata is a community project with the goal to store all of the world’s knowledge in a machine readable format. This data can be viewed, edited and -most excitingly - queried by everyone. In this talk I will show how the Wikidata Query Interface allows us to ask questions about the world around us and can help us explore these with automatic interactive visualisations.

To do so, I will introduce the Wikidata project and explain how data is modelled in it. With this knowledge we will go on to learn about the SPARQL query language which allows us to write queries to Wikidata. We can then use the Wikidata Query Builder which is an online interface that turns queries into timelines, tables and other interactively explorable visualisations.

What kinds of queries can we expect? The world’s biggest cities with a female mayor. A map of German election districts coloured by winning party (or gender, or age, …). An interactive timeline of politicians who became federal ministers. Handball player nick names… (Almost) everything is possible with Wikidata!

Presenter: Knut Hühne

View Details

Wikidata is a community project with the goal to store all of the world’s knowledge in a machine readable format. This data can be viewed, edited and -most excitingly - queried by everyone. In this talk I will show how the Wikidata Query Interface allows us to ask questions about the world around us and can help us explore these with automatic interactive visualisations.

To do so, I will introduce the Wikidata project and explain how data is modelled in it. With this knowledge we will go on to learn about the SPARQL query language which allows us to write queries to Wikidata. We can then use the Wikidata Query Builder which is an online interface that turns queries into timelines, tables and other interactively explorable visualisations.

What kinds of queries can we expect? The world’s biggest cities with a female mayor. A map of German election districts coloured by winning party (or gender, or age, …). An interactive timeline of politicians who became federal ministers. Handball player nick names… (Almost) everything is possible with Wikidata!

Presenter: Knut Hühne

View Details

Nowadays many projects do not use a traditional backend any more, but have moved their logic to FaaS (Function as a Service) like AWS Lambda. The core idea is that you don’t have to manage a server, but instead you just upload code and it will be executed on some event. Normally AWS only supports Nodejs, Python and a few more languages for this service. But with custom runtimes, we can deploy any language!

In this Tech Weekly, I will show how you can write a stateless service (in our case a telegram bot) in Haskell and deploy it to AWS Lambda with Terraform.

Presenter: Jan van Brügge

View Details

Nowadays many projects do not use a traditional backend any more, but have moved their logic to FaaS (Function as a Service) like AWS Lambda. The core idea is that you don’t have to manage a server, but instead you just upload code and it will be executed on some event. Normally AWS only supports Nodejs, Python and a few more languages for this service. But with custom runtimes, we can deploy any language!

In this Tech Weekly, I will show how you can write a stateless service (in our case a telegram bot) in Haskell and deploy it to AWS Lambda with Terraform.

Presenter: Jan van Brügge

View Details

Have you ever ended up in a situation where you need to do a small change to an old TS/JS app that no-one has touched in months? Quite often, in these situations, the app does not work anymore, because of a change in a dependency or a dependency of a dependency. This is why http://npmplease.com/ exists. The JS ecosystem is inherently broken. There are cases where malicious packages have made thousands or millions of projects stop working.

In this presentation, Olavi will talk about how to avoid ending up in a huge mess with your node_modules, and how to handle dependencies in a future-proof way without loosing your time and energy waiting for “npmplease”.

Presenter: Olavi Haapala

View Details

Have you ever ended up in a situation where you need to do a small change to an old TS/JS app that no-one has touched in months? Quite often, in these situations, the app does not work anymore, because of a change in a dependency or a dependency of a dependency. This is why http://npmplease.com/ exists. The JS ecosystem is inherently broken. There are cases where malicious packages have made thousands or millions of projects stop working.

In this presentation, Olavi will talk about how to avoid ending up in a huge mess with your node_modules, and how to handle dependencies in a future-proof way without loosing your time and energy waiting for “npmplease”.

Presenter: Olavi Haapala

View Details

Times of crisis are a test for how (or not) we have integrated accessibility into our processes. When the urge to help and to do things well apply tension, the shortcuts we rely on might mislead us.

In this talk, we will reframe the conventional “edge case” as a “stress case”. We will cover how accessibility benefits even more people in a crisis, and how our own processes can or should adapt under stress.

The last thing I want to do with this, is to put yet more pressure on you; we already have enough of that. Instead, I want us to look at the systems that are bigger than us, and which will only change with our collective effort.

Presenter - Fotis Papadogeorgopoulos

View Details

Times of crisis are a test for how (or not) we have integrated accessibility into our processes. When the urge to help and to do things well apply tension, the shortcuts we rely on might mislead us.

In this talk, we will reframe the conventional “edge case” as a “stress case”. We will cover how accessibility benefits even more people in a crisis, and how our own processes can or should adapt under stress.

The last thing I want to do with this, is to put yet more pressure on you; we already have enough of that. Instead, I want us to look at the systems that are bigger than us, and which will only change with our collective effort.

Presenter - Fotis Papadogeorgopoulos

View Details

A rally call for both Finland and Europe to make your sites faster and leaner than before. Along with a primer on how to do so. Including why your fake fast Gatsby site probably ain't so fast for reals and what to do about it.

Presenter - James Stone

View Details

A rally call for both Finland and Europe to make your sites faster and leaner than before. Along with a primer on how to do so. Including why your fake fast Gatsby site probably ain't so fast for reals and what to do about it.

Presenter - James Stone

View Details

Traditionally the web has consisted of fully Server Side Rendered (SSR) web pages. As new technologies popped up, more and more dynamic features got introduced. Then, came along React and the golden time of JavaScript based Single Page Applications (SPA). But now, we have gone full circle and “everyone” is talking about SSR again. Why?

Presenter - Olavi Haapala

View Details

Traditionally the web has consisted of fully Server Side Rendered (SSR) web pages. As new technologies popped up, more and more dynamic features got introduced. Then, came along React and the golden time of JavaScript based Single Page Applications (SPA). But now, we have gone full circle and “everyone” is talking about SSR again. Why?

Presenter - Olavi Haapala

View Details

Many of you are probably using TypeScript in your daily work. And why not, types make our code safer and tooling can help us more. But from time to time you probably encounter some weird behaviour of the type system that you cannot fully understand. This week I want to explain the foundation of the type system of TypeScript and also contrast it a bit with other languages like PureScript.

Presenter - Jan van Brügge

View Details

Many of you are probably using TypeScript in your daily work. And why not, types make our code safer and tooling can help us more. But from time to time you probably encounter some weird behavior of the type system that you cannot fully understand. This week I want to explain the foundation of the type system of TypeScript and also contrast it a bit with other languages like PureScript.

Presenter - Jan van Brügge

View Details

Long projects take effort. Past hotfixes accumulate, decisions go untold, and uncertainty may loom. In this talk, we’ll go over incremental changes to our ageing play.fiba3x3.com codebase, and the work we are doing to make it be more responsive and accessible. By the end, I hope you’ll have some things to add to your backlog, and ideas for how to tackle them!

Presenter- Fotis Papadogeorgopoulos

View Details

Long projects take effort. Past hot-fixes accumulate, decisions go untold, and uncertainty may loom. In this talk, we’ll go over incremental changes to our ageing play.fiba3x3.com codebase, and the work we are doing to make it be more responsive and accessible. By the end, I hope you’ll have some things to add to your backlog, and ideas for how to tackle them!

Presenter: Fotis Papadogeorgopoulos

View Details

A lot of times, when working with a client, you either inherit or interact with a REST API that turns your hair gray. Changing endpoints, undocumented methods, flaky return values, and other surprises make you wish that you had chosen a more pleasant career like lion taming or sword swallowing.

In this tech talk, we will present Unmock, an open-source JavaScript and Python integration testing library that makes working with external APIs delightful. You’ll leave with lots of practical recommendations and code snippets that you can bring to new or existing projects to accelerate development, ease communication, and win more business.

Presenter: Mike Solomon from Meeshkan

View Details

A lot of times, when working with a client, you either inherit or interact with a REST API that turns your hair gray. Changing endpoints, undocumented methods, flaky return values, and other surprises make you wish that you had chosen a more pleasant career like lion taming or sword swallowing.

In this tech talk, we will present Unmock, an open-source JavaScript and Python integration testing library that makes working with external APIs delightful. You’ll leave with lots of practical recommendations and code snippets that you can bring to new or existing projects to accelerate development, ease communication, and win more business.

Presenter: Mike Solomon from Meeshkan

View Details

React and Redux are told to embrace Functional Programming (FP) but nothing comes enforced nor explained. Those seeking better FP solutions often come to Elm (A strictly typed purely functional language used for Frontend apps), but it remains a hard sell for the client or employer. Everyone wants “just React.” But today it is possible to get a more FP-like experience using some off-the-shelf libraries and TypeScript configuration. 

Topics covered: Redux-loop middleware, the RemoteData pattern from Elm, the Maybe / Just / Nothing monad

Presenter: James Stone

View Details

React and Redux are told to embrace Functional Programming (FP) but nothing comes enforced nor explained. Those seeking better FP solutions often come to Elm (A strictly typed purely functional language used for Frontend apps), but it remains a hard sell for the client or employer. Everyone wants “just React.” But today it is possible to get a more FP-like experience using some off-the-shelf libraries and TypeScript configuration. 

Topics covered: Redux-loop middleware, the RemoteData pattern from Elm, the Maybe / Just / Nothing monad.

Presenter: James Stone

View Details

You spend your days writing code, most likely a RESTful backend or a client consuming said backend. You’ve done this before, and you’re going to do this again. In the heat of the project it’s easy to forget to note all the things you did well and the things you could improve for next time.    In this talk I’ll list some of the best practices that have stuck with me on how to build a RESTful backend. We’ll cover general advice applicable to any technology choice as well as some practical examples using the Play Framework and Scala programming language.   Presenter - Oskar Ehnström

View Details

You spend your days writing code, most likely a RESTful backend or a client consuming said backend. You’ve done this before, and you’re going to do this again. In the heat of the project it’s easy to forget to note all the things you did well and the things you could improve for next time. 

In this talk I’ll list some of the best practices that have stuck with me on how to build a RESTful backend. We’ll cover general advice applicable to any technology choice as well as some practical examples using the Play Framework and Scala programming language.

Presenter - Oskar Ehnström

View Details

Browsers can save any website as a PDF, so why should we use a server-side pdf generator to provide PDFs to our users? This talk by Judith explores the browsers ability to generate PDF documents with repeating headers, footers and page numbers and how we can apply these learnings to make a normal website more printer friendly.

Presenter - Judith Hartmann

View Details

Browsers can save any website as a PDF, so why should we use a server-side pdf generator to provide PDFs to our users? This talk by Judith explores the browsers ability to generate PDF documents with repeating headers, footers and page numbers and how we can apply these learnings to make a normal website more printer friendly.

Presenter - Judith Hartmann

View Details

Redux is a great solution for managing application-level state that we use in a lot of our projects, for good reason. However, it does not provide any guidance for organizing application logic. In this talk, Denis shares a declarative approach to integrating logic into Redux apps that is well encapsulated, easy to test, and applicable to various use cases.

Presenter: Denis Washington

View Details

Redux is a great solution for managing application-level state that we use in a lot of our projects, for good reason. However, it does not provide any guidance for organizing application logic. In this talk, Denis shares a declarative approach to integrating logic into Redux apps that is well encapsulated, easy to test, and applicable to various use cases.

Presenter: Denis Washington

View Details

Excellent documentation is one of the best ways to promote your OS project. Come and learn what excellent documentation is. Also how to improve your current documentation without much effort. And what is a good place to start. BTW all these ideas apply to commercial projects, not only open source.

Presenter - James Stone

View Details

Excellent documentation is one of the best ways to promote your OS project. Come and learn what excellent documentation is. Also how to improve your current documentation without much effort. And what is a good place to start. BTW all these ideas apply to commercial projects, not only open source.

Presenter - James Stone

View Details

One of the most vocal opposition of code comments is that, code comments become outdated and thus harmful. Code comments are a great way to store very specific information of functions, hacks and decisions that gets lost over time.

We often talk about documentation in two forms: either code comments that live with the code or readmes, API docs and other more curated written documentation. But both of them suffer from lack of history. But there’s more!

We often look back at decisions without having the understanding and knowledge of that moment and critize the code or decisions made hastily. But almost always, decisions are made using the best understanding and knowledge (and restrictions of reality) of that particular moment in time.

In this talk, Juha-Matti Santala explores how you can issue tracker tickets, git commits and pull requests as a contemporary documentation: something that tells us about the world as it was when decisions were made and that doesn’t change as the project moves on.

Presenter - Juha-Matti Santala

View Details

One of the most vocal opposition of code comments is that, code comments become outdated and thus harmful. Code comments are a great way to store very specific information of functions, hacks and decisions that gets lost over time.

We often talk about documentation in two forms: either code comments that live with the code or readmes, API docs and other more curated written documentation. But both of them suffer from lack of history. But there’s more!

We often look back at decisions without having the understanding and knowledge of that moment and critize the code or decisions made hastily. But almost always, decisions are made using the best understanding and knowledge (and restrictions of reality) of that particular moment in time.

In this talk, Juha-Matti Santala explores how you can issue tracker tickets, git commits and pull requests as a contemporary documentation: something that tells us about the world as it was when decisions were made and that doesn’t change as the project moves on.

Presenter - Juha-Matti Santala

View Details

Have you heard about sizzy.app?

They claim it’s “The browser for developers and designers” and “Stop wasting time and speed up your workflow". Olavi decided to figure out if these bold claims were true. You’ll hear his first impressions about Sizzy after using it for a couple of days in a client project.

Presenter: Olavi Haapala

View Details

Have you heard about sizzy.app?

They claim it’s “The browser for developers and designers” and “Stop wasting time and speed up your workflow". Olavi decided to figure out if these bold claims were true. You’ll hear his first impressions about Sizzy after using it for a couple of days in a client project.

Presenter: Olavi Haapala