Undone Programming Newsletter #5

This issue sets the mood for our upcoming Scala meetup, with some articles about Scala’s unique libraries and their applications, which are not easily replicable in other languages. We’ll also look at a comparison of Rust and Zig in terms of performance and memory safety, and we’ll close the round with TypeScript and some tips on how to leverage its type system to write more robust code.
Cats Effect vs ZIO
A well-written article comparing two of Scala’s prominent functional libraries and their important applications: handling effects, resource management, dependency injection, concurrency systems as a fiber runtime implementation, and streaming.
Scala 3 Data Transformation Library: Automating Data Transformations with ducktape
Scala 3 meta-programming capabilities open the door to many interesting libraries. Ducktape is a data-transformation library that uses auto-derived typeclasses via macros to generate transformers from one case class to another. Read the article to learn more about ducktape, and also to understand why this approach is often better than runtime introspection.
Comparing Rust vs. Zig: Performance, safety, and more
In one of our previous issues we linked an article comparing Rust and Zig. Now here’s another that’s also worth a read. It gives a good basic introduction to each language, highlighting their similarities and differences. And since they overlap in their use-cases, mostly as a systems programming language, there’s also a performance benchmark to compare the speed of execution of a few selected programs.
Making TypeScript Truly “Strongly Typed”
TypeScript is a huge step forward in terms of writing correct code, as opposed to JavaScript with its static type system. However, as a superset of JavaScript it must support its dynamic features, which are usually expressed by “any” type. In this article we’ll find out how far one must go with compiler and lint settings to the keep the use of “any” as low as possible.
I am a knowledge-obsessed, life-positive software developer who approaches every day with a passion for learning and a drive to inspire others. As a natural problem solver, I excel at applying creative thinking to solve complex problems and am constantly pushing the boundaries of what is possible in software development.