---
title: "Developer Bits - Tim Deschryver"
description: "Short notes about developer tools, new .NET and Angular features, and other topics that I'm excited about."
canonical: https://timdeschryver.dev/bits
---

# Developer Bits

Tools || (new) features || blog posts in a bit format on topics that I'm excited about.

## Bits

- [Playwright v1.45 makes you a Time Wizard](https://timdeschryver.dev/bits/playwright-v145-makes-you-a-time-wizard) (2024-06-25; topics: playwright, testing): The latest release of Playwright, version 1.45, introduces a new feature called Clock . This feature allows you to manipulate the time in your tests, making...
- [Inferred Type Predicates](https://timdeschryver.dev/bits/inferred-type-predicates) (2024-06-18; topics: typescript): It's finally here! While working with TypeScript, I assume we all have been in a situation where we have to write a type predicate to help TypeScript...
- [Automatic Service Discovery and Registration using Scrutor](https://timdeschryver.dev/bits/automatic-service-discovery-and-registration-using-scrutor) (2024-06-11; topics: dotnet, developer-experience): Scrutor , created by Kristian Hellang , is a library that extends the functionality of the built-in ASP.NET Core Dependency Injection (DI) container (...
- [Interacting with GitHub through the GitHub CLI](https://timdeschryver.dev/bits/interacting-with-github-through-the-github-cli) (2024-06-04; topics: developer-experience, productivity, devtools): Throughout the last few years, GitHub has provided us with more and more tools that improve the experience with their platform. The development never stops,...
- [Empathy Matters (as a Software Developer)](https://timdeschryver.dev/bits/empathy-matters-as-a-software-developer) (2024-05-28; topics: empathy, non-technical): The most challenging aspect of software development isn't the technical side of the coding process, but rather the human interactions involved. To quote...
- [Enforce module boundaries with no-restricted-imports](https://timdeschryver.dev/bits/enforce-module-boundaries-with-no-restricted-imports) (2024-05-21; topics: typescript, developer-experience, architecture): Define module boundaries in your project by restricting specific imports using ESLint's no-restricted-imports rule. The rule allows you to prevent certain...
- [Different scenarios require different Entity Framework behaviors](https://timdeschryver.dev/bits/different-scenarios-require-different-entity-framework-behaviors) (2024-05-14; topics: dotnet, entity-framework): Don't just duplicate the way you query entities in your project, consider tweaking how entities are retrieved for some specific scenarios. Being attentive to...
- [Using ngxtension to migrate towards "Modern" Angular](https://timdeschryver.dev/bits/using-ngxtension-to-migrate-towards-modern-angular) (2024-05-07; topics: angular): In recent versions, Angular has introduced a new set of APIs and features that are considered "modern" Angular. The inject method, signal based inputs, and...
- [Simplified Dictionary Lookups](https://timdeschryver.dev/bits/simplified-dictionary-lookups) (2024-04-30; topics: dotnet): When accessing values from a dictionary, it is common to check if the key exists before accessing the value to avoid exceptions when the key does not exist...
- [An improved content projection experience with fallback content](https://timdeschryver.dev/bits/an-improved-content-projection-experience-with-fallback-content) (2024-04-23; topics: angular): In Angular 18 you will be able to specify fallback content for ng-content slots. This feature allows you to define default content within ng-content tags, if...
- [Take control of query parameterization in EF 9](https://timdeschryver.dev/bits/take-control-of-query-parameterization-in-ef-9) (2024-04-16; topics: dotnet, entity-framework): In Entity Framework 9 we will have more control on how parameters and constants are used within the generated SQL queries. Using the two new methods...
- [Improvements to `dotnet test` in .NET9](https://timdeschryver.dev/bits/improvements-to-dotnet-test-in-net-9) (2024-04-09; topics: dotnet): So far, the preview versions of .NET 9 have introduced two improvements to the dotnet test command.
- [Load testing](https://timdeschryver.dev/bits/load-testing) (2024-04-02; topics: tools, performance): To measure is to know. As a developer, it's crucial to evaluate your system's capability for building robust and reliable software applications.
- [SQL Temporal Tables](https://timdeschryver.dev/bits/sql-temporal-tables) (2024-03-26; topics: sql, entity-framework): SQL Temporal Tables is a feature that allows you to keep a history of changes to a table without an effort. By enabling SYSTEM_VERSIONING on a table, SQL...
- [Creating a good-looking Windows Terminal](https://timdeschryver.dev/bits/creating-a-good-looking-windows-terminal) (2024-03-19; topics: windows, developer-experience): As a developer, I spend a "lot" of time in the terminal. I use it to run various other commands ranging from navigating to folders, running my environment,...
- [Rate limiting in ASP.NET](https://timdeschryver.dev/bits/rate-limiting-in-aspnet) (2024-03-12; topics: dotnet): Rate limiting is a technique used to control the number of requests a client can make to a server. It is often used to prevent abuse of an API, e.g. to...
- [The Methods to Update an Array: Cheat Sheet](https://timdeschryver.dev/bits/the-methods-to-update-an-array-cheat-sheet) (2024-03-05; topics: typescript): ECMAScript 2023 (ES2023 or ES14) introduces a fresh set of array instance methods to enhance the way arrays can be modified.
- [Angular DevTools](https://timdeschryver.dev/bits/angular-devtools) (2024-02-27; topics: angular, devtools): The Angular DevTools is a browser extension that provides debugging and profiling capabilities for Angular applications. With the DevTools you can explore...
- [Snapshot testing in C# with Verify](https://timdeschryver.dev/bits/snapshot-testing-in-c-with-verify) (2024-02-20; topics: dotnet, libraries): Snapshot testing is a powerful technique that allows you to compare the output of your code with a previously stored value, also known as a snapshot. This...
- [Simplify Grouping Arrays in JavaScript with Object.groupBy()](https://timdeschryver.dev/bits/simplify-grouping-arrays-in-javascript-with-objectgroupby) (2024-02-13; topics: typescript): Grouping an array of objects in JavaScript no longer needs to be complex. The new Object.groupBy() static method simplifies this task by allowing you to...
- [Entity Framework Include Filters](https://timdeschryver.dev/bits/entity-framework-include-filters) (2024-02-06; topics: dotnet, entity-framework): The location where you filter (included) entities is important, as it has a significant impact on the result set. Without knowing the details, it's easy to...
- [Automatically verify that team rules are met using Architectural Tests](https://timdeschryver.dev/bits/automatically-verify-that-team-rules-are-met-using-architectural-tests) (2024-01-30; topics: libraries, developer-experience, productivity): Every team has rules and agreements on how to write and structure code. In the best case, these are documented, and yes we all know that developers don't...
- [Generate code with NSwag using the OpenAPI Specification](https://timdeschryver.dev/bits/generate-code-with-nswag-using-the-openapi-specification) (2024-01-23; topics: devtools, libraries): It appears that the popular Swashbuckle.AspNetCore project isn't being actively maintained anymore, and doesn't support .NET 8. NSwag provides a good and...
- [Use Zod to parse Unknown Data](https://timdeschryver.dev/bits/use-zod-to-parse-unknown-data) (2024-01-16; topics: typescript, developer-experience, libraries): How many times was there an issue within your application because you trusted data that you don't control (e.g. incoming data), or worse, how many times did...
- [New in Entity Framework 8: Primitive collection properties](https://timdeschryver.dev/bits/new-in-entity-framework-8-primitive-collection-properties) (2024-01-09; topics: dotnet, entity-framework): Starting from EF 8, EF automatically stores a collection of primitive values directly in a column (as JSON), whereas previously a separate table was required.
- [Improve your development tasks with Windows Dev Drive](https://timdeschryver.dev/bits/improve-your-development-tasks-with-windows-dev-drive) (2023-12-26; topics: productivity, developer-experience): If you know me, you know that I like to fully optimize my workflow, and a Dev Drive helps to improve it.
- [Optimize your bundle size with source-map-explorer](https://timdeschryver.dev/bits/optimize-your-bundle-size-with-source-map-explorer) (2023-12-19; topics: angular, performance): Recently I was able to reduce the initial load of our Angular application from 2.8MB to 750kb ( a 75% reduction! ) in just a few minutes.
- [Simpler code with Using Declarations](https://timdeschryver.dev/bits/simpler-code-with-using-declarations) (2023-12-12; topics: dotnet): The using declaration is a feature (introduced in C# 8.0) that allows you to declare a disposable object with the using keyword.
- [👋 Hello @ngrx/signals](https://timdeschryver.dev/bits/hello-ngrx-signals) (2023-12-05; topics: angular, ngrx): Exciting news for Angular developers!
- [Use jq to query and manipulate JSON data](https://timdeschryver.dev/bits/use-jq-to-query-and-manipulate-json-data) (2023-11-28; topics: devtools, productivity): jq is a lightweight command-line tool to quickly process your JSON data. I mainly use it to search ( grep ) and select specific fields of a JSON file, but it...
- [NuGet Central Package Management](https://timdeschryver.dev/bits/nuget-central-package-management) (2023-11-21; topics: dotnet): When you've worked in a mono-repository that contains multiple C# projects, you've probably felt the pain of maintaining NuGet dependencies. Updating...
- [Pretty TypeScript types](https://timdeschryver.dev/bits/pretty-typescript-types) (2023-11-14; topics: typescript): I learned this trick from Matt Pocock , and I've seen the power by seeing Marko Stanimirović using it in the NgRx codebase. Because I think that we'll see...
- [Edit and send HTTP requests directly from the Browser DevTools](https://timdeschryver.dev/bits/edit-and-send-http-requests-directly-from-the-browser-devtools) (2023-11-07; topics: devtools, productivity): Did you know you can use the browser DevTools (in Microsoft Edge and Firefox) to edit and send network requests?
- [How are the TypeScript Partial and Required types implemented?](https://timdeschryver.dev/bits/how-are-the-typescript-partial-and-required-types-implemented) (2023-10-31; topics: typescript): I find it important to know how the most-used TypeScript utility types are implemented. Here, we see the implementation of the Partial (all properties of a...
- [Bulk updates in Entity Framework](https://timdeschryver.dev/bits/bulk-updates-in-entity-framework) (2023-10-24; topics: dotnet, entity-framework): Use bulk updates to update entities with a single command (without the need of the change tracker).
- [How to quickly open a GitHub repository within an IDE](https://timdeschryver.dev/bits/how-to-quickly-open-a-github-repository-within-an-ide) (2023-10-17; topics: devtools): As developers, we read more code than we write.
- [New in C# 12: Collection expressions](https://timdeschryver.dev/bits/new-in-c-12-collection-expressions) (2023-10-10; topics: dotnet): Creating collections becomes simpler in C# 12 using collection expressions. We can also make use of the spread operator .. to copy the values from a collection.
- [Polyglot Notebooks](https://timdeschryver.dev/bits/polyglot-notebooks) (2023-10-03; topics: devtools, developer-experience, vscode): As developers, we sometimes need an isolated environment or a testing sandbox. For example, to reproduce a problem, or to share a snippet with a team member.
- [Angular Control Flow](https://timdeschryver.dev/bits/angular-control-flow) (2023-09-26; topics: angular): The past week I cursed Angular a little bit because I just wanted to have a simple if-else condition within my HTML template. But, as you probably already...
- [Cypress to Playwright converters](https://timdeschryver.dev/bits/cypress-to-playwright-converters) (2023-09-19; topics: playwright): Migrating from one test library to another can be a daunting task, but with the right tools, we can make it a smoother transition.
- [Switch Exhaustiveness](https://timdeschryver.dev/bits/switch-exhaustiveness) (2023-09-12; topics: dotnet, typescript): How many times have you added a new option (enum, union, expression, ...) without updating all code paths? Did this result in unforeseen issues?
- [The Evolution of C# Constructors](https://timdeschryver.dev/bits/the-evolution-of-csharp-constructors) (2023-09-05; topics: dotnet): C# 12 introduces a new syntax to declare class constructors with Primary Constructors . That's why I thought that it's a good time to look back at the...
- [Simplified Node.js Version Management with fnm](https://timdeschryver.dev/bits/simplified-nodejs-version-management-with-fnm) (2023-08-29; topics: devtools, nodejs): Are you working on multiple projects that each require a different Node.js version, and are you tired of juggling between them? Then I've got the right tool...
- [Git Log Heatmap](https://timdeschryver.dev/bits/git-log-heatmap) (2023-08-22; topics: git): Use git log to create a heatmap of the files that have been changed the most frequently within a repository. This is useful to identify the files that most...
- [Raw SQL Queries for Unmapped Types in Entity Framework 8](https://timdeschryver.dev/bits/raw-sql-queries-for-unmapped-types-in-entity-framework-8) (2023-08-15; topics: dotnet, entity-framework): Entity Framework 8 has a new feature that allows you to execute raw SQL queries against the database and return results as unmapped types. To use this...
- [Big List of Naughty Strings](https://timdeschryver.dev/bits/big-list-of-naughty-strings) (2023-08-08; topics: libraries, security): Does your application correctly handle all kinds of input correctly? Do you need some inspiration to test your application with some edge/special cases?
- [Http Files](https://timdeschryver.dev/bits/http-files) (2023-08-01; topics: devtools, developer-experience): .http files are a simple way to quickly invoke your API endpoints because you don't have to leave your IDE to use a separate tool. I use it regularly when...
- [Angular Input enhancements](https://timdeschryver.dev/bits/angular-input-enhancements) (2023-07-25; topics: angular): The Angular 16 release adds useful enhancements to the @Input decorator. We can make an input required, we can transform the input value, and we can bind...
- [Tools to keep your NPM dependencies up-to-date](https://timdeschryver.dev/bits/tools-to-keep-your-npm-dependencies-up-to-date) (2023-07-18; topics: devtools, vscode): You can use the default npm commands npm outdated (check the registry to see if any packages are currently outdated) and npm update (update all the packages...
