Types and Programming Languages Part 14 – Pure functions vs impure ones

This is the fourteenth part of the Types and Programming Languages series. For your convenience you can find other parts in the table of contents in Part 1 — Do not return in finally Pure functions — functions returning the same output for the same input, not relying on external state. Some love them. Some … Continue reading Types and Programming Languages Part 14 – Pure functions vs impure ones

Async Wandering Part 14 — Async with Fibers reimplemented in .NET Core

This is the fourteenth part of the Async Wandering series. For your convenience you can find other parts in the table of contents in Part 1 – Why creating Form from WinForms in unit tests breaks async? We already implemented Loom in C# with Fibers. This time, a piece of code which uses P/Invoke (instead … Continue reading Async Wandering Part 14 — Async with Fibers reimplemented in .NET Core

Async Wandering Part 13 — Reentrant recursive async lock

This is the thirteenth part of the Async Wandering series. For your convenience you can find other parts in the table of contents in Part 1 – Why creating Form from WinForms in unit tests breaks async? Today I’ll discuss some misconception regarding the reentrant recursive async lock described in this article. It shows the … Continue reading Async Wandering Part 13 — Reentrant recursive async lock

Bit Twiddling Part 3 — Enabling call recording in Google Phone dialer

This is the third part of the Bit Twiddling series. For your convenience you can find other parts in the table of contents in Par 1 — Modifying Android application on a binary level Today we’re going to enable calls recording in Google Phone dialer using low level tricks. Let’s see how this can be … Continue reading Bit Twiddling Part 3 — Enabling call recording in Google Phone dialer