Who reviews the Pull-Requests?

Pull-Requests are a mechanism to notify others about changes to a branch that you want to merge. It is often used in combination with trunk-based development, where you let your teammates know that your changes are ready to be merged into the trunk. Open-source software (OSS) uses this mechanism too because the requester usually does not have permission to merge directly.

But Pull-Requests are more than a notification mechanism. They can raise awareness in the team about some specific feature, spread knowledge between teammates, and even exercise control over what is merged. It is a mechanism for collaboration.

However, to make this collaboration work, you need someone to review your Pull-Requests. In OSS, this person tends to be the codebase owner, and yet it could take them days or months to review your changelist. In the corporate world, where teams are of different sizes, things could get more complicated to find the right person for review.

Continue Reading…

Creating a deployment pipeline using TeamCity and Octopus Deploy

Nowadays it is essential to be able to deploy to production in a reasonably short amount of time and in an automated manner. In this post, I want to summarize my experience with creating deployment pipelines and I will try to provide as many details as possible, despite the broad topic. I will focus on two concrete tools I have used in the past years – TeamCity and Octopus Deploy, which have helped me create automated deployment pipelines.

Continue Reading…

Using Docker multi-stage builds to produce WebAssembly

Some time ago I decided to start a fun project, the Wheel of WebAssembly, to demonstrate how different programming languages can be compiled to WebAssembly and loaded independently on the same web page. It supports languages like C, AssemblyScript, C#, Java, Kotlin, Go, Rust (I call them wheel parts). Initially, I decided to manually configure the toolchain for each programming language on my machine and then compile them altogether. This worked fine for a while, but with time it became complicated to handle updates for each toolchain. Furthermore, when someone else wanted to play around with the project, they had to go through the same pain of manually configuring their environment. This lead me to start using Docker for building the WebAssembly output for each language. Continue Reading…

How WebAssembly influences existing JavaScript frameworks

WebAssembly is a compiler target for programs on the Web. It allows developers to compile C/C++ or other static-typed languages in a format that can be run in the browser or a Node.js environment without the need to install any 3rd-party plugins. WebAssembly enables developers to reuse code and create highly efficient web applications with near-Native performance. WebAssembly has been supported by all major browsers since October 2017. Continue Reading…

Building distributable libraries in Angular 5+

It took a while since my last touch of AngularJS and I decided to play around with the latest version of Angular again. Although I have been following the Angular community and I know Angular feels more like a completely new framework rather than a continuation of AngularJS, I encountered some challenges when trying to create a simple distributable (via NPM) library myself. Since there are (almost) no official guidelines how to do it, I decided to write this post and to summarize my challenges and findings. Continue Reading…