Scala 3 developer
Good tab completions can make a command-line application a joy to use.
Scala Native makes it possible to launch and run a Scala application with minimal delay. This is great progress.
A few weeks ago, I published Quantitative for representing dimensioned units of measurement. I've just released Abacist, a library built on top of it for ad-hoc, mixed-radix discrete quantities in Sca…
If you've been following my releases of Soundness libraries over the last few weeks, you might have noticed that I rarely use Strings in my examples. Instead, I use a type called Text for representing…
I've written a new blog post, the fourth in my series on error handling in Scala 3. This time I explain Scala 3's expressive types, like Json raises ParseError, and go into detail about how context fu…
I have created a library for rendering tables in the terminal using Unicode box-drawing characters. It's called Escritoire (because it's for writing tables) and it is now available (version 0.11.0) on…
If you enjoyed my first blog post about error handling in Scala, take a look at the second post on The Error Management Manifesto, where I set out twelve principles that define my idealized environmen…
Random data is particularly useful for testing. When we want to test a method that has more possible inputs than we can possible test and check, the next best thing is to test it with a representative…
I have just started a blog, at invariant.blog. My first post, Effective Error Handling is the start of a series in which I'll explore the elegance and safety of Direct-Style Scala with Soundness.
Many Scala developers will recoil at the idea of using exceptions to handle errors. Why? For very good reasons:
How should we represent a permutation—that is, a rearrangement of an ordered sequence?
Almost everything I do in Scala makes it harder to write bad code. I like to introduce new compile errors to stop code which shouldn't make it into production from compiling. So here's something which…