var please = require('share');
console.log('thank you');

NEW !!!

Monday, 17 July, 2023 UTC

5 Inconvenient Truths about TypeScript

I’m writing books about TypeScript and I do workshops and trainings online and in-house. Every time I meet a new group of developers there are some TypeScript facts that they need to be confronted with: ... more

Thursday, 2 March, 2023 UTC

Refactoring in Rust: Introducing Traits

In the same codebase as last time, we extract data from a HashMap<String, String> called headers , presumably dealing with something similar to HTTP headers. ... more

Tuesday, 21 February, 2023 UTC

Refactoring in Rust: Abstraction with the Newtype Pattern

The following piece of code takes a PathBuf and extracts the file name, eventually converting it to an owned String . ... more

Tuesday, 8 November, 2022 UTC

Announcing the TypeScript Cookbook

Oops, I did it again! I’m writing another book, and it’s again about TypeScript. I’m happy to announce The TypeScript Cookbook , to be published in 2023 by O’Reilly. You can check it out in Early Release on the O’Reilly website. ... more

Wednesday, 11 May, 2022 UTC

TypeScript: Iterating over objects

There is rarely a head-scratcher in TypeScript as prominent as trying to access an object property via iterating through its keys. This is a pattern that’s so common in JavaScript, yet TypeScript seems to through all the obstacles at you. This simple ... more

Monday, 9 May, 2022 UTC

The road to universal JavaScript

Universal JavaScript. JavaScript that works in every environment. JavaScript that runs on both the client and the server, something thinking about for years (see 1, 2). Where are we now? ... more

Wednesday, 27 April, 2022 UTC

10 years of fettblog.eu

I missed a little anniversary. Roughly 10 years ago (on April 8, 2012), I started blogging on fettblog.eu! Time flies! I think this is my longest-running project, let’s take some time to reflect. ... more

Friday, 15 April, 2022 UTC

Rust: Tiny little traits

Rust’s trait system has a feature that is often talked about, but which I don’t see used that often in application code: Implementing your traits for types that are not yours. You can see this a lot in the standard library, and also in some libraries ... more

Monday, 31 January, 2022 UTC

The TypeScript converging point

Usually, when doing TypeScript talks, I just open up a code editor and hack away some cool types that help in a certain scenario. This time, I was asked to do the same thing but within a 20-minute time limit. This has been super tough, so I scripted ... more

Monday, 10 January, 2022 UTC

How not to learn TypeScript

“TypeScript and I are never going to be friends”. Oh wow, how often have I heard this phrase? Learning TypeScript, even in 2022, can be frustrating it seems. And for so many different reasons. People who write Java or C# and find out things are working ... more

Thursday, 23 December, 2021 UTC

Getting started with Rust

Learning and teaching Rust has been a big part of me in the last couple of years. Interest in the Rust programming language has brought me to found the Rust Linz meetup with Rainer Stropek, to teach Rust at the local university, and to do a ton of workshops ... more

Tuesday, 14 December, 2021 UTC

Introducing Slides and Coverage

There’s a new section on this website! Since today, you’re able to see full coverage of my workshops and talks in the new slides and coverage section. That’s the announcement. If you want to see more, head over to the new section. If you want a little ... more

Tuesday, 30 November, 2021 UTC

TypeScript: The humble function overload

With the most recent type system features like conditional types or variadic tuple types, one technique to describe a function’s interface has faded into the background: Function overloads. And there’s a good reason for that. Both features have been ... more

Thursday, 16 September, 2021 UTC

TypeScript + React: Children types are broken

I currently work with a couple of newcomers to React and teach them both TypeScript and React to create apps. It’s fun, and for me who’s been using that for a while now, it’s a great way of seeing this piece of tech through fresh eyes. ... more

Tuesday, 14 September, 2021 UTC

TypeScript: In defense of any

A couple of days ago I found this beauty on the internet: Give up and use any. That’s a fantastic website, absolutely hilarious! It also shows how much TypeScript has grown in popularity. You have to have a certain reach to get critics to create websites ... more

Thursday, 9 September, 2021 UTC

Rust: Enums to wrap multiple errors

This is a follow-up to Error handling in Rust from a couple of days ago. The moment we want to use error propagation for different error types, we have to rely on trait objects with Box<dyn Error> , which means we defer a lot of information from ... more

Wednesday, 8 September, 2021 UTC

Dissecting Deno

I had the chance to toy around with Deno recently. And with “toy around” I mean dissecting it into little pieces and see how the sausage was made. So, my view is not from a user’s perspective who wants to create and run apps with it, but rather one who ... more

Tuesday, 7 September, 2021 UTC

Error handling in Rust

I started doing university lectures on Rust, as well as holding workshops and trainings. One of the parts that evolved from a couple of slides into a full-blown session was everything around error handling in Rust, since it’s so incredibly good! ... more

Wednesday, 21 July, 2021 UTC

TypeScript: Unexpected intersections

Sometimes when writing TypeScript, some of the things you’d usually do in JavaScript work a little different and cause some weird, and puzzling situations. Sometimes you just want to assign a value to an object property and get a weird error like “Type ... more

Wednesday, 7 July, 2021 UTC

Upgrading Node.js dependencies after a yarn audit

It’s Tuesday! The day of your weekly dependabot alerts from GitHub! A nice reminder to check on your projects, and usually just a few clicks worth of work, the automatic update is wonderful. ... more

Tuesday, 6 July, 2021 UTC

TypeScript: Array.includes on narrow types

The Array.prototype.includes function allows searching for a value within an array. If this value is present, the function returns true ! How handy! Of course, TypeScript has proper typings for this JavaScript functionality. ... more

Tuesday, 13 April, 2021 UTC

TypeScript + React: Typing Generic forwardRefs

If you are creating component libraries and design systems in React, you might already have fowarded Refs to the DOM elements inside your components. ... more

Monday, 15 March, 2021 UTC

shared, util, core: Schroedinger's module names

I do a lot of architecture work lately, and one thing that seems to appear more often than I thought it would be are module names that have generic-sounding names like shared , util , or core . There is something confusing about them, as they don’t tell ... more

Wednesday, 3 March, 2021 UTC

Learning Rust and Go

My blog is a chronicle of learning new things. Most of the articles I write are notes on how I solved problems that I found in my everyday work. And every now and then I have to urge to learn something new! ... more

Tuesday, 2 March, 2021 UTC

TypeScript: Narrow types in catch clauses

When you are coming from languages like Java, C++, or C#, you are used to doing your error handling by throwing exceptions. And subsequently, catching them in a cascade of catch clauses. There are arguably better ways to do error handling, but this one ... more

Wednesday, 20 January, 2021 UTC

TypeScript: Low maintenance types

I write a lot about TypeScript and I enjoy the benefits it gives me in my daily work a lot. But I have a confession to make, I don’t really like writing types or type annotations. I’m really happy that TypeScript can infer so much out of my usage when ... more

Thursday, 7 January, 2021 UTC

Tidy TypeScript: Name your generics

My book TypeScript in 50 Lessons features interludes. Short texts on TypeScript culture that provide room to breathe between heavy, technical tutorials. One of those interludes gives some opinionated advice on how to name generic variables. ... more

Tuesday, 24 November, 2020 UTC

Tidy TypeScript: Avoid traditional OOP patterns

This is the third article in a series of articles where I want to highlight ways on how to keep your TypeScript code neat and tidy. This series is heavily opinionated and you might find out things you don’t like. Don’t take it personally, it’s just an ... more

Friday, 20 November, 2020 UTC

Tidy TypeScript: Prefer type aliases over interfaces

This is the second article in a series of articles where I want to highlight ways on how to keep your TypeScript code neat and tidy. By nature, this series is heavily opinionated and is to be taken with grains of salt (that’s plural). ... more

Thursday, 19 November, 2020 UTC

Tidy TypeScript: Prefer union types over enums

This is the firstarticle in a series of articles where I want to highlight ways on how to keep your TypeScript code neat and tidy. This series is heavily opinionated, so don’t be angry if I ditch a feature that you learned to like. It’s not personal. ... more