An introvert’s guide to public speaking

Two weeks ago I had an opportunity to talk at the Code Europe conference in Warsaw. By doing this I managed to achieve one of my long term goals – to speak in front of more than 100 people. It might not sound impressive but given that I am a rather shy person I consider it a success.

I really believe that getting into public speaking gives you enormous benefits. It helps you develop as a person and ultimately become more open and confident. I’m still at the beginning of this road. Nevertheless, I’d like to share some of my thoughts and hopefully inspire some of you to start speaking in public.

read more

How I built a PWA with Angular and Firebase Part 3: Push Notifications with Firebase Cloud Messaging

This post is the last post of the series in which I will describe how I built my first PWA, Friendtainer. It will touch on many topics such as Angular 2, Ionic 2, Firebase, service workers, push notifications, serverless architectures. I hope you will find it useful when building your own PWAs.

In the previous post I described how to ensure the native-like experience and look-and-feel of the app using the Ionic framework and the manifest file.

In this part of the series, we’ll look at the most interesting part of the app – push notifications and Firebase Cloud Messaging.

read more

My talk at Code Europe 2017: afterthoughts and the Q&A session

Two days ago I delivered my first conference tech talk at Code Europe. It’s a major programming conference taking place in three different cities in Poland (I presented in Warsaw). My talk was based on one of the posts I wrote for this blog: Building serverless web application with Angular 2, Webtask and Firebase.

It was a great experience. I’ve spend a lot of time practicing, trying to implement all the knowledge I’ve learned from various blog posts about public speaking and tech talks (I really recommend this and this). I had a lot of support from my contracting agency for which I’m very grateful. It was a lot of hard work but it’s totally worth it. The way you feel after the presentation when people come over to thank you for a great talk is the best reward you can get. Besides, I feel like the whole process made me more confident and a better communicator in general.

read more

How I built a PWA with Angular and Firebase Part 2: Ionic and app manifest

This post is part of a series in which I will describe how I built my first PWA, Friendtainer. It will touch on many topics such as Angular 2, Ionic 2, Firebase, service workers, push notifications, serverless architectures. I hope you find it useful when building your own PWAs.

In the previous post I discussed the high-level architecture of the app and the involved technologies.

In this part of the series, we’ll look at how to create a PWA app using the Ionic 2 framework. Additionally, I will talk about the app manifest and how to use it to allow adding the app icon to the device’s home screen.

read more

How I built a PWA with Angular and Firebase Part 1: Introduction

This post is part of a series in which I will describe how I built my first PWA. It will touch on many topics such as Angular 2, Ionic 2, Firebase, service workers, push notifications, serverless architectures. I hope you find it useful when building your own PWAs.

I’ve spent last month working on my new project. It’s called Friendtainer and it’s a smartphone app which helps you meet with your friends regularly. You can add contacts and decide how often you want to meet. If you fail to record a meeting within given timespan you will start receiving reminders until you record a meeting.

read more

Method overload resolution in C# 6.0: an interesting bug story

Recently at work I’ve been looking into migrating our projects from VS2013 to VS2017. As part of the process we decided to move from C# 5.0 to C# 7.0. It turned out that after the switch some of our projects won’t build anymore. I spent some time investigating the issue and found the outcome interesting so let me share my story with you.

Problem

Below is the code that caused issues. It is an interface declaration with two overloads of a single  Get  method.

The code itself was fine. However, if we try to call it like this:

strange things will happen. Under VS2013 the code will compile without issues. However, under VS2017 it will cause a compile error:

read more

JS Poland 2017 Conference: get free ticket and discount codes

I proudly announce that my blog is partnering up with JS Poland 2017!

JS Poland is a promising conference where you will learn about the current state of ES6, Angular, React, Redux, TypeScript and many more.

The conference features 15 great speakers such as Luca Mezzalira (Google Developer Expert, running the London JavaScript Community), Nir Kaufman (whose talk at NgPoland got me into Redux) and Gil Fink (a Microsoft Most Valuable Professional). There will also be 3 days of workshops.

JS Poland will take place June 19 in Warsaw. If you aren’t from Poland, it’s an exciting opportunity to visit my beautiful country! The conference is planned to host 800 guests from all over the world!

read more

Setting up coverage reports on TFS with OpenCover

Code coverage is a metric which indicates the percentage of volume of your source code covered by your tests. It is
certainly a good idea to have code coverage reports generated as part of Continuous Integration – it allows you to keep track of quality of your tests or even set requirements for your builds to have a certain coverage.

Code coverage in Visual Studio is only available in the Enterprise edition. Fortunately, thanks to OpenCover you can still generate coverage reports even if you don’t have access to the Enterprise license.

read more

Understand monads with LINQ

This post is another attempt on explaining the M word in an approachable way. This explanation will best suite C# developers who are familiar with LINQ and query expressions. However, if you are not familiar with C# but would like to learn how powerful and expressive some of its features are, please read on!

Recap of LINQ and query expressions

LINQ is a technology introduced in C# 3.0 and .NET 3.5. One of its major applications is processing collections in an elegant, declarative way.

Here’s an example of LINQ’s select expression:

Query expressions are one of the language features which constitute LINQ. Thanks to it LINQ expressions can look in a way which resembles SQL expressions:

Before LINQ you would need to write a horrible, imperative loop which literates over the numbers array and appends the results to a new array.

read more

Firebase authentication in Angular2 application with Angularfire2

Implementing authentication in web apps is a tedious and repetitive task. What’s more, it’s very easy to do it wrong and expose security holes in our app. Fortunately, Firebase Authentication comes to rescue offering authentication as a service. It means that you no longer need to implement storage and verification of credentials, email verification, password recovery, etc. In this post I’ll explain how to add email/password authentication to an Angular2 application.

Site note: Firebase Authentication can be very useful when building a serverless application.

read more