Obfuscating data in SQL Server November 12, 2024 Obfuscating data is a common practice to protect sensitive information, such as Personally identifiable information (PII). In this post, I will go over some techniques on how you can obfuscate data in SQL Server. Read more
What about my API documentation now that Swashbuckle (Swagger) is no longer a dependency in ASP.NET 9 October 29, 2024 As you will see in this blog post, the "baked-in" Swashbuckle package is no longer a dependency in the ASP.NET 9 project template. Let's take a look at what this means for your API documentation and go through some options to render the OpenAPI document. Read more
New LINQ methods in C# 13: Index, CountBy, AggregateBy October 23, 2024 Taking a look (including examples) at the new LINQ methods that will be introduced in C# 13, as part of the .NET 9 release. Read more | Read TLDR
Create a custom SQL expression with Entity Framework, or how to make EF interpret your Value Types October 10, 2024 A deep-dive at the internals of Entity Framework to come up with a solution to make EF interpret your value types, in this particular case a strongly-typed ID (of the StronglyTypedId NuGet Package). Read more | Read TLDR
Taking a look at the Problem Details enhancements in ASP.NET 9 September 26, 2024 How to make use of the new StatusCodeSelector property to change the default HTTP response status code (500) of a Problem Details response, based on the thrown exception. Read more | Read TLDR
My recommendations to configure Visual Studio Code for Angular Development September 12, 2024 Enhance your Angular development experience by installing the extensions mentioned in this article. We'll also modify a couple of settings in Visual Studio Code to make it easier to work with. Read more
Nice to knows when implementing policy-based authorization in .NET August 29, 2024 I assumed to know how policy-based authorization works in .NET, but I was wrong. Let's cover the basics to get a better understanding of how to implement a policy, and what to look out for. I also share some tips and tricks that improve your authorization layer. Read more
Angular Testing Library with Vitest July 30, 2024 Because of the Vitest plugin provided by Analog it just takes a few steps and minutes to test your Angular components with Angular Testing Library. Read more
The new on property improves output testing in Angular Testing Library July 25, 2024 A quick look at the new `on` API to write output tests more intuitively and without workarounds. Read more | Read TLDR
Integrating Tailwind CSS in Blazor June 27, 2024 In this post, you learn how to set up Tailwind CSS in a Blazor application, how to optimize the development experience, and how to minify the CSS file in a production environment. Read more
The different ways to load your OpenID configuration for Angular Auth OIDC Client June 24, 2024 How to configure the provideAuth function from the Angular Auth OIDC Client library to load your OpenID configuration synchronously or asynchronously. Read more
Signals in Angular Auth OIDC Client June 13, 2024 Version 18 of the angular-auth-oidc-client library adds Signal support to access the authenticated state and user data. Read more
Consuming .NET Feature Flags within an Angular Application May 30, 2024 Learn how to consume feature flags from a .NET API (using Microsoft.FeatureManagement.AspNetCore) within an Angular application. Read more
Adding .NET Code Coverage to your Azure DevOps pipeline May 02, 2024 A step-by-step guide on how to add code coverage to your .NET project in Azure DevOps. Read more
Testing Signals with Angular Testing Library April 11, 2024 TLDR: If you're already using Angular Testing Library, you're in luck, because it's already prepared to handle the Signal properties. Read more
Angular has your back when it comes to XSS March 07, 2024 Angular provides XSS security without an effort to your development process. Read more
Bringing the power of Signals to Angular Forms with Signal Forms February 08, 2024 Signal Forms is a new way to create forms in Angular. It's built on top of the existing `NgModel` with a similar API to `ReactiveForms`, and uses signals to create a reactive and flexible form. The main goal is to make complex forms manageable. Read more | Read TLDR
Using Zod's schema to render a reusable and dynamic Angular table component January 25, 2024 When you think of Zod, you think of parsing and validation. But by leveraging some of Zod's lesser-known functionality we can do more than simply use it to parse objects, for example, to generate a dynamic and reusable table component. Read more
Multiple releases using the same, but configurable, Angular Standalone Application build January 11, 2024 Configuring an Angular standalone application to be flexible enough to be released in different environments. Read more
The decorator pattern using .NET's dependency injection December 22, 2023 Taking leverage of the decorator pattern to add extra behavior to existing an implementation. We first see how to do this manually, before taking a look at Scrutor to simplify this task. Read more
Intercepting HTTP requests with a DelegatingHandler November 30, 2023 How and why you should use a DelegatingHandler to extract common HTTP request behavior. Read more
How to include an Angular Project within .NET Aspire November 23, 2023 Learn how to add and configure your Angular application in a .NET Aspire Application Host. Read more
Testing Deferrable Views with Angular Testing Library November 16, 2023 Let's expore the new API's of Angular Testing Library (v14.5.0) to see how we can easily test deferrable views. Read more
Wolverine embraces Observability November 08, 2023 In this post, I'm showing how easy it is to enable the Observability features of Wolverine. This matters (a lot) because it gives us insights into the core of the application and its overall state. Read more | Read TLDR
How to fully leverage Wolverine with its HTTP package October 26, 2023 Taking the next step to keep the architecture and the codebase simple with Wolverine. In this blog post, we'll take a look at the WolverineFx.HTTP package to make the interaction with HTTP requests easier. Read more | Read TLDR
Wolverine is for the developers October 05, 2023 Keep your codebase simple by introducing Wolverine. As you'll notice in this blog post, Wolverine helps to reduce complexity and brings a lot of functionality without the hassle and the noise. Read more | Read TLDR
Merging your Playwright sharded reports into a single HTML report September 18, 2023 Playwright v1.37 introduces a new `merge-reports` command. In this blog post we'll see how leverage this command to create a single test report from different sharded test reports. The result is one page containing all of your test results. Read more | Read TLDR
Implementing a Feature Flag-based Endpoint Filter August 24, 2023 Keep your Minimal API route handlers clean and compact by implementing a reusable feature flag-based endpoint filter. Read more | Read TLDR
A cheat sheet to migrate from Moq to NSubstitute August 14, 2023 A quick reference to help the migration from Moq to NSubstitute. Read more
How to globally register Injection Tokens within the Angular TestBed August 07, 2023 Provide global Injection Tokens within the Angular TestBed once to keep your test setups simple and DRY. Read more
Translating Exceptions into Problem Details Responses July 24, 2023 In this post, we'll take a look at the newly introduced IExceptionHandler in ASP.NET Core 8. We'll implement an exception handler that translates exceptions into Problem Details using the Problem Details Service. The result is a standardized and better experience for your API consumers. Read more | Read TLDR
Entity framework features I wish I knew earlier July 12, 2023 Some useful built-in Entity Framework features that I discovered along the way. Read more
Configuring angular-auth-oidc-client with the new functional APIs July 03, 2023 Recently the angular-auth-oidc-client library (v16) introduced new APIs to configure the library in a functional way. In this blog post, I'll show you how to use them. Read more | Read TLDR
Playwright API testing with zod June 26, 2023 In this post we'll create a custom Playwright matcher to validate the shape of the response body using the zod library. This way, we make sure that the contract between the front-end application and the API is valid. Read more | Read TLDR
Treat your .NET Minimal API Endpoint as the application layer June 14, 2023 Leverage the power of Minimal APIs to treat your endpoint as the application layer. This has several benefits, but I find the biggest one being the simplicity of it. Read more
How the new UI mode improves the Playwright experience May 30, 2023 I find that Playwright offers a great testing experience, and the new UI mode makes it even better. In this blog post, we'll take a look at the UI mode and see how it improves the overall experience. Read more
Refactor your .NET HTTP Clients to Typed HTTP Clients May 23, 2023 A summary of why and how you should refactor your HTTP clients to the typed HTTP client version in .NET. Read more | Read TLDR
Fixing Angular Standalone Components that have a circular dependency May 15, 2023 Luckily there's a function called `forwardRef` to solve a circular dependency between two Angular Standalone Components. A use case for this is a recursive component that renders its parent component. Read more | Read TLDR
Prevent a Hangfire job from running when it is already active May 03, 2023 Concurrency in recurrent jobs can cause race condition issues. However, we can prevent such problems by queuing new jobs when the same job is still pending. This approach helps to manage the job execution and avoids issues that may arise when multiple instances of the same job are active at the same time. In this post we'll see how we can ensure that only one instance of the job is running at any given time, thus preventing conflicts and ensuring a reliable job execution. Read more | Read TLDR
Let's make our SPA more secure by consuming a Duende BFF with Angular April 24, 2023 Let's take a look at how shifting the auth responsibility from a front-end application to a Backend For Frontend (BFF) affects our Angular applications. Read more
The different retry APIs from Playwright April 17, 2023 You probably already know the built-in retry mechanism for locators and matchers, but are you already familiar with the retry and polling APIs? Let's take a look at the different retry APIs that Playwright has to offer, and when to use them. Read more
Let's make our SPA more secure by setting up a .NET BFF with Duende and Auth0 April 11, 2023 To improve the security of our Single Page Applications, let's ditch the access tokens in the browser and make the Backend for Frontend (BFF) responsible for the authentication process using the Authorization Code flow with PKCE. To achieve this, we'll use the Duende.BFF NuGet package and let it communicate with Auth0. Read more | Read TLDR
Include attachments to your Playwright report March 28, 2023 To save us some time in the process to verify that a file is correct, let's automate the actions to download a file and add it to the Playwright test report for easy access. Read more | Read TLDR
You can now return unmapped types from raw SQL select statements with Entity Framework 8 March 21, 2023 Entity Framework 8 brings a new feature allowing us to execute and return unmapped types from SQL select statements. In this blog post we'll take a quick look at how we can accomplish this, and why this is an important tool to have in your toolkit. Read more | Read TLDR
Create and run Playwright test sets using tags and grep March 13, 2023 At some point in time you'll want to run a subset of your tests. Organizing your tests with Playwright test tags helps you to do this in a clean way. Using tags allows you to target specific tests in specific scenarios, and can help to scale your pipeline(s). Read more
Revamped: Authentication with Playwright March 06, 2023 Playwright (v1.31) introduces a new feature to make the authentication process easier. This approach unifies the authentication flow with the rest of the test cases, and more importantly makes it possible to test with different user roles. Read more
Angular standalone components and Angular Testing Library make component tests easier February 27, 2023 Standalone components give you a better foundation to build on, as your Angular component becomes less affected by its internals. It doesn't matter if the component has its own template, or if it's using child components. This makes your test cases less brittle than before with Angular Modules. To interact with the component we're still using the Angular Testing Library because it provides useful utilities to interact and query the component. Read more
Invoke the Azure DevOps API from within your Azure DevOps pipeline February 20, 2023 Using the Azure DevOps API to automatically add reviewers to an Azure DevOp Pull Request from within the CI pipeline. Read more
Get easy access to Angular route and query parameters with zod February 13, 2023 Using zod's coerse method to easily access route and query parameters in Angular. Read more | Read TLDR
I tried the Angular Standalone migration, and here is the result February 06, 2023 Let's migrate an Angular application using @NgModules to the standalone API. For this task, we use the automatic schematic that's available in Angular v15.2.0-next.2. We also take a look at the manual steps that are required to fully migrate the application to use the new functional APIs. Read more
Improve your test experience with Playwright Soft Assertions January 30, 2023 Take advantage of soft assertions in Playwright to improve your test experience and reduce the amount of time spent on fixing bugs. Soft assertions allow that multiple assertions can fail in a single test, rather than stopping the test execution after the first failure. Read more | Read TLDR
Adding OpenTelemetry to an Angular Application January 23, 2023 How to register the OpenTelemetry web packages to automatically create traces and send them to a backend. The result is a helpful dashboard containing insights about the Angular application. Read more | Read TLDR
Consuming SQL Functions with Entity Framework January 09, 2023 Using DbFunctions is a method to use database-specific functions in your Entity Framework queries. They allow you to take advantage of features that are specific to a particular database provider, such as SQL Server and use them in your Entity Framework queries in a provider-agnostic way. As an example, let's use the SOUNDEX SQL function. Read more | Read TLDR
Using Angular Testing Library with Test Harnesses December 19, 2022 In most cases, I write tests for Angular components without using Test Harnesses, but finding the correct element(s) is not always straightforward. Here, Test Harnesses play a part in easily finding and interacting with those components that can't be queried. Using Test Harnesses is also a good practice into keeping your tests readable and resilient to changes. Read more | Read TLDR
Intercepting HTTP Requests with Playwright November 29, 2022 Intercepting HTTP requests is a useful feature, let's take a look at how you can intercept an HTTP request with Playwright and discuss some of the possibilities. Read more
Assertion Scopes, the one FluentAssertions feature you didn't know you needed November 15, 2022 A simple trick to increase your productivity and testing experience. Read more | Read TLDR
You should take advantage of the improved NgRx APIs November 09, 2022 NgRx isn't what it used to be. Take advantage of the updated APIs to improve your code base. The result is a more maintainable code base that is easier to read and navigate. Read more
Playwright in an Azure DevOps Pipeline November 01, 2022 Creating a pipeline to run TypeScript Playwright tests in Azure DevOps. Read more | Read TLDR
Testing localization with Playwright October 24, 2022 Testing your translation logic and localization with Playwright Read more | Read TLDR
How to disable githooks in an Azure DevOps YAML Pipeline October 07, 2022 How to disable githooks in an Azure DevOps YAML Pipeline Read more
Watch out what you expose with Angular Interceptors September 28, 2022 Your Angular Interceptor might leak sensitive data to the outside world. Here's how to prevent that. Read more
Using Geolocation in Playwright tests September 26, 2022 Before the application gets access to the location of the user, the user receives a prompt asking for permission to share their location. This is not different in Playwright tests. In this blog post, we see how to handle this prompt for your Playwright tests. Read more | Read TLDR
Using zod-fixture with MSW to generate mocked API responses September 13, 2022 Did you know that you could quickly set up a mocked API with the use of zod-fixture and MSW? Read more | Read TLDR
How zod-fixture can help with your test setups September 05, 2022 Don't waste your energy and time by manually creating test fixtures, use zod-fixture to make this process a breeze. Read more | Read TLDR
Keep your Playwright tests structured with steps August 22, 2022 Leverage the Playwright test.step function to divide your tests into logical steps. These steps create a well-organized summary in the Playwright report and have the benefit that tests become more readable and easier to maintain, especially when a failed test is displayed in the Playwright report. Read more | Read TLDR
New in Entity Framework 7: Bulk Operations with ExecuteDelete and ExecuteUpdate August 16, 2022 Exploring the new `ExecuteDelete` and `ExecuteUpdate` methods that were introduced in Entity Framework. Read more | Read TLDR
Using an Azure DevOps Pull Request Template to remind your team about the Definition of Done August 12, 2022 Making the team aware of the Definition of Done each time a Pull Request is created. Read more | Read TLDR
How to upload files with Playwright August 02, 2022 Uploading files with Playwright is easy! Read more | Read TLDR
Get access to the deployed Azure Static Webb App URL within your GitHub Workflow July 27, 2022 How to run your Playwright tests against your Azure Static Web App preview environment, which is build and deployed with the Azure/static-web-apps-deploy GitHub Action. Read more | Read TLDR
Exploring the new output caching middleware July 18, 2022 Taking a closer look at the capability of the new output caching middleware in .NET 7 Read more
Why we should verify HTTP response bodies, and why we should use zod for this July 04, 2022 Let's explore zod together and see it can be useful to create a safer enviroment by parsing HTTP response bodies. Read more | Read TLDR
Enable shell scripts for the JetBrains Toolbox App June 24, 2022 How to open your JetBrains IDEs that are installed via the JetBrains Toolbox directly from the command line. Read more
Feature Flags in .NET, from simple to more advanced June 21, 2022 Let's implement a naive feature flag, refactor the code with the .NET Feature Management API, and to top things off, the Azure Feature Management Feature is thrown into the mix to tweak the feature flags dynamically without having an impact on the users. Read more
Specify your Node.js version for the Azure Static Web App GitHub Action June 03, 2022 Learn how to specify the Node.js version for the Azure/static-web-apps-deploy GitHub action. Read more
Tye, starting and running multiple APIs with a single command May 30, 2022 Using Tye to run your local development environment. Read more
Using Playwright test shards in combination with a job matrix to improve your CI speed May 23, 2022 Utilizing a matrix within your GitHub workflow to create a "test shard matrix" is a major improvement to your CI. This practice can cut the time in half (or better) to run your Playwright test suite. Read more | Read TLDR
How to stay up-to-date May 03, 2022 Continuous learning is an essential part of your career, let's take a look at how you can do your best to keep growing. Read more
Directory.Packages.props, a solution to unify your NuGet package versions April 18, 2022 The Consolidate view is dead, long live `Directory.Packages.props`. Use the `Directory.Packages.props` file to define your NuGet package versions in a single file. Read more
Proof of concept: ngx-query-state April 04, 2022 A hassle-free way to fetch data and render the current state of the HTTP request. Read more | Read TLDR
Flush state with an NgRx meta-reducer March 29, 2022 A snippet on how to remove a specific slice within the NgRx state object. Read more
Trying out OData for the first time March 21, 2022 What advantages does OData bring and why should we use it? Read more
Fast and easy authentication with Playwright March 14, 2022 Using the global setup feature from Playwright to authenticate a test user and reuse its authentication state throughout your test suite. Read more | Read TLDR
Use Angular directives to extend components that you don't own March 07, 2022 Angular directives allow us to extend components without changing their internal code. This is useful to bring a consistent UX to 3rd party components. The directive can be configured to always be applicable, or can be used in an opt-in or opt-out basis. Read more | Read TLDR
Writing your first Playwright test March 01, 2022 Setting up playwright and "writing" a first test only takes a few minutes! Read more | Read TLDR
TIL params inheritance strategy to always have access to parent route info February 22, 2022 Configure the Angular router to always have access to the parent route data from within the child route. Read more | Read TLDR
Be proactive when you join an Angular project February 15, 2022 Tips to help improve the shape of an older Angular codebase. Read more | Read TLDR
Single Component Angular Modules and Component Tests go hand in hand January 31, 2022 Say no to brittle tests with SCAMs Read more
Writing a performant client-side filter with [hidden] and trackBy January 24, 2022 Creating a better user experience with the hidden benefit of the hidden attribute. Read more
How I've set up my new Windows development environment in 2022 January 11, 2022 Configuring a new Windows machine with ease for full-stack .NET and Angular development Read more
Configuring Azure Application Insights in an Angular application December 22, 2021 Creating a wrapper around the Application Insights SDK to easily consume it in an Angular application Read more | Read TLDR
Testing an NgRx project November 17, 2021 How write maintainable NgRx tests within an Angular application Read more
Stop misusing TypeScript type assertions October 18, 2021 Don't create a false sense of security by overusing type assertions, instead use type annotations and return types. Read more | Read TLDR
Refactor Functional Tests to support Minimal Web APIs October 11, 2021 Some small changes that are needed to create application instances in Functional Tests for Minimal Web APIs Read more | Read TLDR
The simplicity of ASP.NET Endpoints October 05, 2021 Keepings it simple with ASP.NET Endpoints and its dependency system Read more | Read TLDR
Maybe it's time to rethink our project structure with .NET 6 September 27, 2021 Challenging the status quo with some thoughts on the new .NET Minimal Web API to keep code simple Read more | Read TLDR
Pattern Matching Examples in C# September 13, 2021 Some basic and more advanced examples of pattern matching in C#. Read more
Building incremental views with XState Parallel States August 24, 2021 How to load data from different sources without blocking the UI Read more | Read TLDR
Solving Angular slow renders with NgRx selectors August 15, 2021 Prepare your (view)models before they reach the component to make them faster and easier to render. Read more
Using the .NET CLI to restore packages from a private NuGet feed July 25, 2021 A fix for "Response status code does not indicate success: 401 (Unauthorized)" Read more | Read TLDR
Reduce memory usage of .NET services on a single machine July 22, 2021 A snippet on how to configure your project to reduce its memory consumption when multiple services are hosted on one server. Read more
Prevent a .NET API from adding cache headers to unsuccessful requests July 19, 2021 Implementing custom cache middleware to prevent non-200 responses from being cached by a client Read more | Read TLDR
Getting the most value out of your Angular Component Tests July 06, 2021 How I write my Angular Component Tests with the Angular Testing Library. Read more
Why I stopped worrying about test setups by using AutoFixture June 21, 2021 A model is always changing, but that shouldn't be the concern of your tests Read more | Read TLDR
How to patch an HTTP Response with Cypress June 08, 2021 A brief post on how to patch a part of an incoming HTTP response Read more | Read TLDR
How to set up a dynamic CI/CD pipeline with GitHub Actions May 25, 2021 Learn how to create a single workflow that runs on multiple environments with conditional steps Read more | Read TLDR
Automagically optimize your images with Squoosh May 17, 2021 Minify images as a pre-commit step with Squoosh, husky, and lint-staged Read more | Read TLDR
Environment variables with SvelteKit April 26, 2021 A simple workaround to use environment variables in SvelteKit Read more
A generic Angular template-driven validator April 14, 2021 One validator to rule them all Read more | Read TLDR
A practical guide to Angular Template-Driven Forms March 10, 2021 The things I looked up while learning the template-driven way Read more | Read TLDR
A new way to validate Angular Forms February 25, 2021 Adding a layer on top of the Angular Forms API to declare useful and readable form validators Read more
Argument of type 'interface' is not assignable to parameter of type 'interface' February 09, 2021 A peculiar TypeScript error at compile time and how to solve it Read more
Creating a new C# API: Validate incoming requests January 22, 2021 Clean validation with MediatR, FluentValidation and the Problem Detail specification Read more
Faster SQL Bulk Inserts With C# January 06, 2021 Using SQL Bulk Copy to have a huge performance gain Read more | Read TLDR
Preload lazy-loaded modules based on user roles November 30, 2020 Let's create a custom Angular preload strategy that loads all modules for the authenticated user Read more
Nested NgRx Entity State November 16, 2020 How to manage nested state with multiple NgRx entity adapters. Read more
Process your list in parallel to make it faster in .NET November 02, 2020 Lessons learned while refactoring a process to make a migration from one system to another system faster Read more
Auto-focus a form control with an Angular directive October 19, 2020 Give auto-focus to form controls with just a few lines of code Read more
How to make your Azure DevOps CI/CD pipeline faster October 12, 2020 Make your CI/CD pipeline smarter and only build (and release) what's modified to optimize a run Read more
Finding that C# memory leak September 21, 2020 Tracking the cause of my first memory leak written in C# (that I know of) Read more
The benefits of adding rx-query to your Angular project September 07, 2020 Highlighting the functional and technical advantages by using rx-query Read more
Making your application feel faster by prefetching data with NgRx August 31, 2020 Utilize the NgRx Global Store cache to persist data before it's shown Read more
Getting to know SQL Server Extended Events August 17, 2020 How to convert your SQL Profiler template to an XEvent template. Read more
SQL Server Profiler, underused and undervalued August 11, 2020 How to use the SQL Server Profiler as a utility knife to get a better understanding of your system. Read more
A use case for the RxJS expand operator July 27, 2020 How I used the expand operator to create a retry functionality in rx-query. Read more
Show stacktrace when dotnet core API doesn't start July 22, 2020 A snippet on how to get a stacktrace when a .NET Api fails to start. Read more
Testing RxJS streams with rxjs-for-await July 21, 2020 How does rxjs-for-await compare to other approaches when it comes to testing RxJS streams, and what I like about these tests. Read more
Using MSW (Mock Service Worker) in an Angular project June 15, 2020 Using MSW to mock your server in an Angular project Read more
Why writing integration tests on a C# API is a productivity booster June 08, 2020 Time-consuming tasks that can be prevented with integration tests. Read more
Making sure you're using the correct query June 01, 2020 Keeping your Angular Testing Library tests maintainable by using its new features. Read more
Polling with a NgRx Effect May 25, 2020 A snippet on how to poll a service by using a NgRx Effect. Read more
Consistency over motivation May 25, 2020 Eliminate motivation as a factor to get things done, find your rhythm, and just (start to) do. Read more
The initial developer experience while trying out Deno for the first time May 18, 2020 Some notes from my first experience with Deno while writing a minimal API server. Read more
TIL: URLSearchParams May 03, 2020 From my experience dealing with query strings was harder than it should be. But with URLSearchParams and URL it's actually pretty easy to do! Read more
An experiment, using the global NgRx Store as a local store April 27, 2020 Getting to know the internals of NgRx to make a local component store happen. Read more
I like my components big April 20, 2020 Creating sub-components comes with a cost. So what do I think of before creating a new component, because if a component passes the x lines of code isn't a valid reason. Read more
The difference between the canActivate and canActivateChild guards April 13, 2020 How do the canActivate and canActivateChild guards work in Angular and how to these guards compare? Read more
Migrating a TSLint Rule to ESLint with @typescript-eslint April 06, 2020 The most important pointers you need to know before migrating your TSLint rules to ESLint rules. Read more
How to not create your RxJS Observables March 30, 2020 Do not reassign an Observable, instead wrap it in another Observable. Read more
How to test your C# Web API March 23, 2020 How to use functional testing to have confidence in the code you ship. Read more | Read TLDR
Generated tests with XState and Cypress March 16, 2020 Let's explore how we can stop writing tests and at the same time be more confident in the code we write. We do this by using the new XState test package, in combination with Cypress and Testing Library. Read more
Make your C# applications faster with LINQ joins March 09, 2020 If you don't watch out your C# application might suddenly perform badly. As a solution, we can limit the number of operations with a LINQ Join. Read more
Setting up Cypress with axe for accessibility March 02, 2020 Having an accessible website is important. With the combination of Cypress and axe you can verify that your website is accessible, with only 2 extra lines of code. Read more
Flagged enum, why and how February 24, 2020 Let's take a look at what a flagged enum is and when these can be handy Read more
Unlocking reactivity with Svelte and RxJS February 17, 2020 I keep being surprised by how reactive Svelte feels. In this article, we take a glance at the Svelte internals to see how Svelte accomplishes this. This is important if we want to use RxJS in Svelte. Read more
Help Angular to make your application faster February 03, 2020 Learn what we did to make our Angular application snappier. Read more
Destructure an object to remove a property January 28, 2020 A snippet on use destructuring to remove a property from an object in an immutable way. Read more
How to test Svelte components January 26, 2020 Writing Svelte component tests with the Svelte Testing Library is simple. Let's take a look at the setup to get you started! Read more
Print CSS with Angular January 19, 2020 If you're using Angular, there's a good chance that you're using a component-based architecture. We can use this architecture to our advantage. Instead of creating one big print stylesheet with some selectors, which becomes unmanageable complex when you have to support multiple printable pages. We can move some of the layout back to the components. Read more
NgRx creator functions 101 January 13, 2020 The createAction creator function opened opportunities in the NgRx world. With it came two other creator functions, createReducer and createEffect. Let's take a look at what's so special about it and why it's important. Read more
Managing different slices of the same NgRx state January 06, 2020 In this article, we'll iterate over an implementation to introduce multiple independent instances of a NgRx store slice. In an application, these instances can be represented by a tab-like interface. To come to a solution we'll use the Angular Router, NgRx Effects, and NgRx Router Store. We'll also see meta-reducers, helper reducer functions, and smart and dumb components. Read more
Multiple service calls from an Effect December 18, 2019 A snippet on how to invoke multiple service calls within a single NgRx Effect. Read more
Google Maps is now an Angular component November 03, 2019 The Angular Component pearl-lullaby (v9.0.0-rc.0) release introduces the second official @angular/component component, a Google Maps component. In this post, we take a look at getting started with the Google Maps component. Read more
Use the new Angular Clipboard CDK to interact with the clipboard October 28, 2019 The new Angular Material release brings us a new CDK clipboard module to interact with the clipboard. In this post, we'll explore how to use the new Clipboard CDK by going over some examples. Read more
Reseed your database with Cypress October 14, 2019 By using a Cypress task it's possible to run code JavaScript code in Node.js. We can leverage this API to reseed a database with data we're in control of. Having control over the data allows us to write specific and isolated scenarios to run tests against. Read more
Good testing practices with ๐ฆ Angular Testing Library October 03, 2019 The Angular Testing Library provides utility functions to interact with Angular components, in the same way as a user would. This brings more maintainability to our tests, gives us more confidence that our component does what it's supposed to do, and it improves the accessibility which is better for our users. All these benefits, plus you'll see that it's fun to write tests in this way. Read more | Read TLDR
Guarding your Angular modules ๐โ September 16, 2019 A lot of Angular modules need to be imported with a static forRoot() function, via this function it allows us to configure the module. But sometimes we make the mistake to use the forRoot function more than once throughout an application. We might not notice it when this happens but often it is the cause of unexpected behavior, which is sadly hard to debug. In this post, we'll look into a solution. Read more
A little trick with Angular forms and directives ๐ July 29, 2019 Imagine having a form that you want to use at multiple places inside your application. The form will have the same layout but the validation will be different. In our case, this form is used in a procedure and in each step of the procedure the form gets more restrictive. Can you keep it DRY? We had this problem and came up with the following solution. Read more
My love letter to XState and statecharts โฅ July 08, 2019 I discovered XState a year ago, I already had encountered state machines and statecharts before but I missed the point. Now a year further, I'm here to tell you that these are worth looking into and that XState is a the library to get you started. For me, the most important points to use XState or statecharts would be that it's declarative and explicit, it's hard to create invalid state. The nice extra's that you get with it, is the tooling around it and the portability across frameworks. Read more
Don't miss out on css variables July 01, 2019 At first when I heard of css variables, I was a bit skeptical. Why would anyone use it if there are extension languages as scss, sass, less and stylus. After several years, I stated to notice more and more peoples using it, writing about it and talking about it. I was missing out on something... After a while of using it, I was hooked. Read more
Writing a dev.to blog post with VSCode June 12, 2019 Writing and publishing a dev.to blog post directly within VSCode Read more
Reading Code Coverage June 02, 2019 An intro to code coverage, how to read it, and how to make use of it in your workflow. Read more
Build once deploy to multiple environments ๐ May 20, 2019 In our quest to build a twelve-factor app where we build once and deploy to multiple environment we encountered some problems, but we managed to solve them. Read here how we did it. Read more | Read TLDR
Jump start your developer career with these 13 tips May 14, 2019 I believe that to become a better engineer it all comes down to practice, practice and more practice. Especially when you just started your career. The problem is that when you're just getting started, there is much more to it than just writing lines of code. Read more
Working with Angular forms in an enterprise environment April 23, 2019 At our company, we struggled with Angular Forms at the start. This is because we dived in head first, without talking about how we would want to use it throughout our projects. This post shows how we're currently using Angular Forms to be more productive. Read more
Social media cards with Vue and Gridsome April 15, 2019 It's easy to create metadata tags with Gridsome, I was so happy with it that I wanted to write this post ๐. There is also a page in the docs on how to create metadata tags, but let's translate the theory into a real world example. Read more
Common and easy-to-make mistakes when youโre new to NgRx March 04, 2019 Writing and refactoring FizzBuzz in NgRx with maintainability in mind Read more
Bending TSLint to your needs January 10, 2019 Using the power of TSLint in an unconventional way to create rxjs-operator-counter. Read more
Keeping browser tabs in sync using localStorage, NgRx, and RxJS December 03, 2018 Weโre going to take a look at how we can keep the state in sync when a user has multiple tabs open. Read more
Semantically release your Angular library October 22, 2018 Iโm taking you along in my journey towards a fully automated process for releasing a library! Using CircleCI and the semantic-release. Read more
Test for accessibility and help millions of people October 11, 2018 Essential tools for maximum accessibility Read more
Exploring Drag and Drop with the new Angular Material CDK October 04, 2018 Drag and Drop is a new feature in the new Angular Material CDK. Letโs explore it together! Read more
Sharing NgRx state between Angular modules is peanuts September 10, 2018 A dive into NgRx selectors Read more
Integrate Jest into an Angular application and library August 15, 2018 Follow me in this play-by-play guide and let's integrate Jest within your Angular project! Read more
Let's have a chat about Actions and Action Creators within NgRx July 30, 2018 I think it's time you and I talk a bit about action creators. But before we get into action creators let's first start with actions. Read more
Start using ngrx/effects for this July 09, 2018 You're probably only using ngrx/effects to handle the communication to an external source by triggering an effect with a NgRx action. But you can do more. Read more
How I test my NgRx selectors June 25, 2018 Let us explore which methods I'm using to test my NgRx selectors. Read more
Introducing ngx-testing-library June 18, 2018 An adapter around dom-testing-library to provide lightweight utility functions to test Angular components. Read more
Simple state mutations in NGXS with Immer June 07, 2018 A follow-up post of "Clean NgRx reducers using Immer". But this time we're using NGXS as our state management library. Read more
Data synchronization in multiple clients May 28, 2018 Often when working with a CRUD heavy application you find yourself or someone else asking the question, what should be done when multiple users are using the same screens at the same time. Read more
ng update: the setup May 21, 2018 Within 5 minutes you can automagically have your library upgraded when a user runs the ng update command. Read more