Piotr Lewandowski
@piotrlnet.bsky.social
Sharing experiences on TypeScript and Angular.
Team Captain @dynatrace Core UI
Team Captain @dynatrace Core UI
Hiding the router in the electrical panel looks sleek, but the speed drop is brutal. Closing the metal box cuts Wi-Fi by 10x, just 5m away.
August 16, 2025 at 6:19 PM
Hiding the router in the electrical panel looks sleek, but the speed drop is brutal. Closing the metal box cuts Wi-Fi by 10x, just 5m away.
Ever year or two I decide to go away from Notion to Obsydian, run the export and I'm reminding myself how hard it is to navigate for what actually "Current" is.
Then I go back to Notion boards views splitted by current/done.
Then I go back to Notion boards views splitted by current/done.
July 14, 2025 at 8:33 PM
Ever year or two I decide to go away from Notion to Obsydian, run the export and I'm reminding myself how hard it is to navigate for what actually "Current" is.
Then I go back to Notion boards views splitted by current/done.
Then I go back to Notion boards views splitted by current/done.
One of the most common traps of TypeScript.
Record<string, *> is so convenient for map-like structures but can't be trusted.
Falsely assumes that any string will **always** return a defined value, which breaks in runtime easily.
My go-to replacement: Always wrap it with Partial<>
Record<string, *> is so convenient for map-like structures but can't be trusted.
Falsely assumes that any string will **always** return a defined value, which breaks in runtime easily.
My go-to replacement: Always wrap it with Partial<>
April 2, 2025 at 9:20 PM
One of the most common traps of TypeScript.
Record<string, *> is so convenient for map-like structures but can't be trusted.
Falsely assumes that any string will **always** return a defined value, which breaks in runtime easily.
My go-to replacement: Always wrap it with Partial<>
Record<string, *> is so convenient for map-like structures but can't be trusted.
Falsely assumes that any string will **always** return a defined value, which breaks in runtime easily.
My go-to replacement: Always wrap it with Partial<>
Today I found myself at GPT :D I got a question I couldn't answer about Angular fakeAsync. A colleague then asked BingGPT, and it answered correctly. Turned out it connected the dots from StackOverflow post and my blog.
March 11, 2025 at 9:07 PM
Today I found myself at GPT :D I got a question I couldn't answer about Angular fakeAsync. A colleague then asked BingGPT, and it answered correctly. Turned out it connected the dots from StackOverflow post and my blog.
#infoshare conference after 30 minutes in queue, still about 100 meters to the building Seem there is no difference between free and paid ticket
March 11, 2025 at 9:07 PM
#infoshare conference after 30 minutes in queue, still about 100 meters to the building Seem there is no difference between free and paid ticket
Enough work for today
March 11, 2025 at 9:07 PM
Enough work for today
Typescript 5.0 gets new decorator standard incompatible with the current experimental one. Angular developers start to https://devblogs.microsoft.com/typescript/announcing-typescript-5-0-beta/#differences-with-experimental-legacy-decorators
March 11, 2025 at 9:07 PM
Typescript 5.0 gets new decorator standard incompatible with the current experimental one. Angular developers start to https://devblogs.microsoft.com/typescript/announcing-typescript-5-0-beta/#differences-with-experimental-legacy-decorators
Our most costfull ESLint rules: @nrwl_io takes 90% time of whole ESLint check
March 11, 2025 at 9:07 PM
Our most costfull ESLint rules: @nrwl_io takes 90% time of whole ESLint check
It's my #Twitterversary! I have been on Twitter for 14 years, since 25 Dec 2009 (via @twi_age).
March 11, 2025 at 9:06 PM
It's my #Twitterversary! I have been on Twitter for 14 years, since 25 Dec 2009 (via @twi_age).
Feels weird and boring.
Everywhere Twitter drama, I'll just uninstall app and take a break.
Twitter is boring right now.
Everywhere Twitter drama, I'll just uninstall app and take a break.
Twitter is boring right now.
March 11, 2025 at 9:06 PM
Feels weird and boring.
Everywhere Twitter drama, I'll just uninstall app and take a break.
Twitter is boring right now.
Everywhere Twitter drama, I'll just uninstall app and take a break.
Twitter is boring right now.
🇪🇺 European Commision is right about chargers.
Hardware I've bought in **last three years** requires:
1️⃣USB-2 to Micro-USB
2️⃣USB-2 to USB-C
3️⃣USB-2 to Lighting
4️⃣USB-C to USB-C
5️⃣USB-C to Magnetic watch charger
6️⃣USB-2 to Magnetic watch charger
7️⃣USB-C to Macbook MagSafe
Hardware I've bought in **last three years** requires:
1️⃣USB-2 to Micro-USB
2️⃣USB-2 to USB-C
3️⃣USB-2 to Lighting
4️⃣USB-C to USB-C
5️⃣USB-C to Magnetic watch charger
6️⃣USB-2 to Magnetic watch charger
7️⃣USB-C to Macbook MagSafe
March 11, 2025 at 9:06 PM
🇪🇺 European Commision is right about chargers.
Hardware I've bought in **last three years** requires:
1️⃣USB-2 to Micro-USB
2️⃣USB-2 to USB-C
3️⃣USB-2 to Lighting
4️⃣USB-C to USB-C
5️⃣USB-C to Magnetic watch charger
6️⃣USB-2 to Magnetic watch charger
7️⃣USB-C to Macbook MagSafe
Hardware I've bought in **last three years** requires:
1️⃣USB-2 to Micro-USB
2️⃣USB-2 to USB-C
3️⃣USB-2 to Lighting
4️⃣USB-C to USB-C
5️⃣USB-C to Magnetic watch charger
6️⃣USB-2 to Magnetic watch charger
7️⃣USB-C to Macbook MagSafe
TIL: Google Drive have OCR. You upload photo or PDF scan and it'll recognize even handwritten text and make it searchable. And it works. Settings -> Convert
March 11, 2025 at 9:06 PM
TIL: Google Drive have OCR. You upload photo or PDF scan and it'll recognize even handwritten text and make it searchable. And it works. Settings -> Convert
This time of the year again. Notion is a bit too complex for my personal life management. I've made it overcomplicated and don't know how to clean it up. All I want is Search.
March 11, 2025 at 9:06 PM
This time of the year again. Notion is a bit too complex for my personal life management. I've made it overcomplicated and don't know how to clean it up. All I want is Search.
Amazed by cyberpunk @edgerunners. It deserves lots of memes #Cyberpunk2077
March 11, 2025 at 9:06 PM
Amazed by cyberpunk @edgerunners. It deserves lots of memes #Cyberpunk2077
I've seen it in action on project with crazy amount of RxJs. Great for debugging values lost in stream and visualization like redux devtools.
Appreciate to work with such bright minds at @Dynatrace ♥️ https://x.com/Enea_Jahollari/status/1564173475853570052
Appreciate to work with such bright minds at @Dynatrace ♥️ https://x.com/Enea_Jahollari/status/1564173475853570052
March 11, 2025 at 9:06 PM
I've seen it in action on project with crazy amount of RxJs. Great for debugging values lost in stream and visualization like redux devtools.
Appreciate to work with such bright minds at @Dynatrace ♥️ https://x.com/Enea_Jahollari/status/1564173475853570052
Appreciate to work with such bright minds at @Dynatrace ♥️ https://x.com/Enea_Jahollari/status/1564173475853570052
If you work on the project long enough https://x.com/saucedopen/status/1563298745478893569
March 11, 2025 at 9:06 PM
If you work on the project long enough https://x.com/saucedopen/status/1563298745478893569
Last day of the sprint is when at 6pm you patch your fork of Closure Compiler with some micro-optimisations of memory.
Yes, because it has blown up suddenly 😆
Yes, because it has blown up suddenly 😆
March 11, 2025 at 9:06 PM
Last day of the sprint is when at 6pm you patch your fork of Closure Compiler with some micro-optimisations of memory.
Yes, because it has blown up suddenly 😆
Yes, because it has blown up suddenly 😆
Is this first documented photo of node_modules? https://x.com/zachleat/status/1546971607511474176
March 11, 2025 at 9:06 PM
Is this first documented photo of node_modules? https://x.com/zachleat/status/1546971607511474176
Error Cause ES2022 usage is in vast majority of browsers, yet we're still missing TypeScript typing support.
And this PR is merged for the version 4.8!
https://github.com/microsoft/TypeScript/pull/49639
And this PR is merged for the version 4.8!
https://github.com/microsoft/TypeScript/pull/49639
Set Error.prototype.cause type to unknown (#70) by iamharbie · Pull Request #49639 · microsoft/TypeScript
Describe your changes
This PR fixes #45167 which changes the type of Error.prototype.cause from Error to Unknown
Testing performed
I added new tests to ensure that unknown type is recognised
Additi...
github.com
March 11, 2025 at 9:05 PM
Error Cause ES2022 usage is in vast majority of browsers, yet we're still missing TypeScript typing support.
And this PR is merged for the version 4.8!
https://github.com/microsoft/TypeScript/pull/49639
And this PR is merged for the version 4.8!
https://github.com/microsoft/TypeScript/pull/49639
Are there alternatives for monorepo tooling for Angular that is not Nx?
March 11, 2025 at 9:05 PM
Are there alternatives for monorepo tooling for Angular that is not Nx?
After 5 years of eating out at work, I want to make a habit to make lunch day before.
This is my delayed new year resolution.
This is my delayed new year resolution.
March 11, 2025 at 9:05 PM
After 5 years of eating out at work, I want to make a habit to make lunch day before.
This is my delayed new year resolution.
This is my delayed new year resolution.
I've become much more liberal in terms of TypeScript static types.
e.g. I used to force return types on all methods. I start to feel it's not needed; TS inference works simply fine.
e.g. I used to force return types on all methods. I start to feel it's not needed; TS inference works simply fine.
March 11, 2025 at 9:05 PM
I've become much more liberal in terms of TypeScript static types.
e.g. I used to force return types on all methods. I start to feel it's not needed; TS inference works simply fine.
e.g. I used to force return types on all methods. I start to feel it's not needed; TS inference works simply fine.
Hello Austria 👋 🇦🇹 looking forward for tomorrow's workshops at @Dynatrace
March 11, 2025 at 9:05 PM
Hello Austria 👋 🇦🇹 looking forward for tomorrow's workshops at @Dynatrace
Similar issue is with updating: Jest 26 -> Jest 27
for 20k Angular Tests:
⚡ Jest 26: 2.5min
⛈️ Jest 27: 1h+ and timeouts
but here it's known issue TypeScript compilation caching, and team is working on migration to swc to make it smoother
https://github.com/kulshekhar/ts-jest/issues/1967
for 20k Angular Tests:
⚡ Jest 26: 2.5min
⛈️ Jest 27: 1h+ and timeouts
but here it's known issue TypeScript compilation caching, and team is working on migration to swc to make it smoother
https://github.com/kulshekhar/ts-jest/issues/1967
We're doing migration Angular project from TSLint to ESLint.
15k files and times are not looking good. 🌩️⛈️
TSLint: 6min for whole project
ESLint: 70min for whole project
15k files and times are not looking good. 🌩️⛈️
TSLint: 6min for whole project
ESLint: 70min for whole project
March 11, 2025 at 9:05 PM
Similar issue is with updating: Jest 26 -> Jest 27
for 20k Angular Tests:
⚡ Jest 26: 2.5min
⛈️ Jest 27: 1h+ and timeouts
but here it's known issue TypeScript compilation caching, and team is working on migration to swc to make it smoother
https://github.com/kulshekhar/ts-jest/issues/1967
for 20k Angular Tests:
⚡ Jest 26: 2.5min
⛈️ Jest 27: 1h+ and timeouts
but here it's known issue TypeScript compilation caching, and team is working on migration to swc to make it smoother
https://github.com/kulshekhar/ts-jest/issues/1967
We're doing migration Angular project from TSLint to ESLint.
15k files and times are not looking good. 🌩️⛈️
TSLint: 6min for whole project
ESLint: 70min for whole project
15k files and times are not looking good. 🌩️⛈️
TSLint: 6min for whole project
ESLint: 70min for whole project
March 11, 2025 at 9:05 PM
We're doing migration Angular project from TSLint to ESLint.
15k files and times are not looking good. 🌩️⛈️
TSLint: 6min for whole project
ESLint: 70min for whole project
15k files and times are not looking good. 🌩️⛈️
TSLint: 6min for whole project
ESLint: 70min for whole project