2019-2 Readings of the week

NOTE: The themes are varied. Software/data engineering, languages, writing. Expect a similar wide range in the future as well. You can check all weekly readings by checking the tag here.

Goodbye, Mid-Range Shot

I love a good data visualization, for a long while, long, long time ago I was a paid subscriber to Nathan Yau’s Flowing Data. As usual, a short and interesting visualization where we can discover something about the world.

Speed up your Python using Rust

I need to try this ASAP. Write dylibs with Rust that you can use straight from Python (via the cpython crate).

Build Your Own Shell using Rust

I’m a lot into Rust lately, and here you can find out how to call subprocesses, how to handle errors, awaiting... It has a little bit of everything, even if you don’t intend to write a shell.

Introduction to TLA+ Model Checking in the Command Line

If you’ve been following my twitter or blog, you’ll know I’m really liking TLA+ for formal verification. It’s not like I have a lot to verify day-to-day as a big data engineer, but as soon as there are “big data” microservices around, TLA+ rocks to confirm all the Lego pieces fit as I think they fit. Cutting the story short, TLA+ runs on the TLC Toolbox, which is a Java application which is not super-modern-looking. If you’d rather use Sublime/Atom/Emacs/Vim/ed using TLC from the command line is possible and not hard. Take heed of Ron Pressler's comments on Reddit, though.

From Data Types to Session Types: A Basis for Concurrency and Distribution

The concept of session types seems very interesting. In a sense, Rust’s ownership/lifetime concept can model part of what session types cover.

How the Artificial Intelligence Program AlphaZero Mastered Its Games

I’ve been playing go, on and off (right now is on) for almost half of my life. Although I knew the basics already (I know some deep learning y’know), this is a good write up anybody could understand.

High-Performance Functional Programming Through Effect Rotation

I try to stay away from the more crazy levels of category theory inspired programming (as in, I use 0 of it and have no huge interest), but this post (Scala) about how to optimize stacked monad transformers was very interesting.

SoftwareMill blog: Free and tagless compared - how not to commit to a monad too early

I heard Adam talk about Free & Tagless at the Scala Exchange 2017 (IIRC), and it was one of the clearest expositions I had seen. This post is probably another, also from him. Totally recommended, with the bonus of getting to understand tagless encoding for “free”

Using spaced repetition systems to see through a piece of mathematics

I’m a big fan of spaced repetition in general and Anki in particular. Michaeel (Nielsen) uses it regularly for deeper understanding. If you want more “social proof”, Derek Sivers and Gwern Branwen also recommend it dearly.

The three-page paper that shook philosophy—a hacker’s perspective

When you can put a name on something, it becomes easier to handle. Gettier cases are such. Go read this.

Methods for Array Initialization in Rust

Just when I thought Scala offered too many ways for doing a thing, there comes Rust.

Experience report: organising a conference

I couldn’t attend Chris’ LambdAle last year (I will try this), but having helped organize PyData Barcelona, all he mentions are very valid concerns and tips.

Automatic categorization of text is a core tool now

It sounds obvious, but getting obvious staring you at the face without realizing is a problem.

Rust Performance Pitfalls

I’m still far from seeing performance issues in any Rust I have written (mainly because it’s a very small amount) but it’s good to know where I can stumble.

The Puzzle of Proto-Elamite

I love language history. If you do so too, you’ll enjoy this.

Understanding Rust Lifetimes

Nailing this is the main issue with Rust. This is a good introduction to lifetimes.

📚 The Haiku Handbook

Note this is an Amazon affiliate link. I have always liked Haiku (poems, the operating system is ok), and wanted to have a more formal model on them, to be able to write some someday. This is a very well-written book that reads quickly (to be fair, I skipped the chapter on Teaching)


I’m considering converting this into a weekly newsletter in addition to a blog post. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking here and if enough people join I’ll send these every Sunday night or so.
Written by Ruben Berenguel


2019-1 Readings of the week

If you know me, you'll know I have.a very extensive reading list. I keep it in Pocket, and is part of my to do stored in Things3. It used to be very large (hovering around 230 items since August) but during Christmas it got out of control, reaching almost 300 items. That was too much, and I set myself a goal for 2019 to keep it trimmed and sweet. And indeed, since the beginning of the year I have read or canceled 171 articles (122 in the past week, 106 of which were read). That's a decently sized book!

To help me in this goal, I'll (hopefully) be writing a weekly post about what interesting stuff I have read the past week. Beware, this week may be a bit larger than usual, since I wanted to bring the numbers down as fast as possible.

NOTE: The themes are varied. Software/data engineering, drawing, writing. Expect a similar wide range in the future as well.

The Nature of Infinity, and Beyond – Cantor’s Paradise

A short tour through the life of Georg Cantor and his quest for proving the continuum hypothesis. In the end, he was vindicated.

Statistical rule of three

What is a decent estimate of something that hasn't happened yet? Find the answer here.

Apache Arrow: use of jemalloc

A short technical post detailing why Arrow moved to jemalloc for memory allocation.

Subpixel Text Encoding

This is... unexpected. A font that is 1 pixel wide.

Solving murder with Prolog

I have always been a fan of Prolog, and this is a fun and understandable example if you have never used it.

What Parkour Classes Teach Older People About Falling

Interesting. I'm still young, but I'll keep this in mind for the future.

Implementing VisiCalc

The detailed story about how VisiCalc (the first spreadsheet) was written.

The military secret to falling asleep in two minutes

I was actually doing something similar since I was like 12. It might be a stretch to say 2 minutes, but works.

Index 1,600,000,000 Keys with Automata and Rust

Super interesting (and long) post about how FSA and FST are used for fast search in Rust (I'm a bit into Rust lately). Also, BurntSushi's (Andrew Gallant, the author) cat is called Cauchy, something I appreciate as my cat is named Fatou.

How to Draw from Imagination: Beyond References

An excellent piece on gesture drawing and improving your technique.

Anatomy of a Scala quirk

All languages have their WAT, it's harder to find them in Scala though.

Chaotic attractor reconstruction

An easy example in Python of Takens' embedding theorem

Hello, declarative world

An exploration between imperative and functional, and how declarative fits the landscape

Python with Context Managers

Although I have written tons of Python, I never took the time to either write or understand how context managers work. This one was good.

Raymond Chandler's Ten Commandments For the Detective Novel

You never know when you may write a detective novel. Ruben and the case of the dead executor

Seven steps to 100x faster

An optimisation tour of a piece of code written in Go, from data structures to allocation pressure.

Writing a Faster Jsonnet Compiler

A semi-technical post by Databricks about Jsonnet and why they wrote their own compiler. Serves as an introduction to Jsonnet ("compilable JSON") as well.


Monoid font and Poet emacs theme Today I switched from solarized dark and Fira Code Pro to the above. It looks interesting


I’m considering converting this into a weekly newsletter in addition to a blog post. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking here and if enough people join I’ll send these every Sunday night or so.
Written by Ruben Berenguel


2018: Year in Review

Note some links below are Amazon affiliate links. Buy at your own risk 🤣


During the first half of this year I have been leading a migration to Spark of several systems, one relatively straightforward and the other based on GraphFrames and a graph with ~1 billion nodes. The results so far seem excellent. The second half of the year has been mostly GDPR compliance improvements (I've read the whole law... twice!), looking for additional large-scale data providers and preparing our systems for global scale (around 6x event data capabilities). Has been fun and challenging.


  • In February I moved from East Finchley to Chiswick. This meant I became a Friend of Kew Gardens, and have been there almost every weekend I've been in London. And you could catch me a bit earlier at The Coffee Traveller, enjoying a latte with a carrot cake muffin.

  • In February, we spent a few days in Puigcerdà for my birthday. Not as nice as we expected. The food was good, though (as expected).
  • In March we visited Edimburg again, Laia was attending EdiYarn Festival. I spent the days at Waterstones, eating cupcakes and getting my reading list under control.
  • In May I attended AWS Summit in London. Was ok-ish. Lack of coffee made us grumpy.
  • In June I attended SoCraTesUK 2018 in Dorking, together with Carlos. I had an excellent time there, and will repeat next year if possible. We presented together Welcome to Apache Spark. I also learnt some Cobol.

  • At the end of June we visited Bath for Laia's birthday. Nice town, but a bit packed with tourists. We were lucky England was playing some soccer match and could visit the Roman baths without people.
  • In July we published the first podcast of PyBCN (in Spanish). It's not monthly, next one was in... December 😆
  • In August we roasted a bit under the heat wave hitting the UK by visiting Mayfield Lavender field.
  • In September I attended Scala Italy in Florence, where I got the opportunity to visit Osteria del Cinghiale Bianco again. Excellent.

  • In October we took a few days off so we could disconnect, and spent them on Hay-on-Wye, as some tradition we follow says. We bought a bunch of books (I think there are no books by Roger Zelazny left there) and I did nothing. Bliss. Also, best scones ever.
  • In November I helped a bit from afar with the organisation of PyDay 2018. I couldn't attend, but looked excellent. We also told the world PyBCN is now an organisation you can become a member of.
  • In December, I attended Scala Exchange for the third time, and gave a lightning talk about TLA+ (Formally Verifying Complex Systems Using TLA+). Looks like people enjoyed my talk, and I had an excellent time as usual.

I made minor contributions (typos, small fixes) to several open source projects (Spark, typeshed, Monix, bloop,...), and also created a couple for my enjoyment: experimenting with Processing in Scala, sbt-ifttt and rb-zsh-theme.


This year I got a bit deeper into functional Scala, using GraphFrames and (in general) graph operations on big data. Got acquainted and got to hate Apache Airflow. I improved my knowledge of Akka (adding clustering and sharding to the "could do"). I also learned TLA+ and I plan to dive deeper into this rabbit hole the coming year. Started learning Rust. Made some minor stuff using HyperApp, and have been considering learning PureScript so I can write something close to "enjoyable" Javascript. I have also started playing the ukulele.


My top pick for the year is without any doubt Thinking in Systems: A Primer among books I read this year (19 books). Didn't read much non-fiction, and can't recommend any this year. According to Pocket (which I started using around June, after the GDPR fiasco of Instapaper) I read the equivalent to 18 books in blog posts since then.


This year I attended a couple concerts, both in London: Hayseed Dixie and Steve'n'Seagulls. I ended the year listening to a lot of covers by Leo Moracchioli and progressive metal/instrumental metal like Polyphia (which eventually become boring) and Intervals (which are better). All the links in this section are good renditions by each on Youtube


Main one is that Apple finally upgraded the MacBook Air so I can have one with 16GB of RAM, so I got that one as soon as I could. It also implied getting a USB C hub and I also got a power brick, both from Anker, so I could simplify my desktop cable tangles (also several USB A to C and USB C-C cables). In no particular order, I also got
  • An acoustic ukulele (soprano) and soon after, I got this electric travel ukulele (concert). To go with it I got an AmPlug (clean)
  • A mountie very early in the year. Sadly it doesn't work with my new Air, but with the old one it was a blast.
  • A Brydge keyboard for my iPad (heavy, but excellent)
  • A SoundCore Motion Q speaker from Anker. We're getting another one soon to get stereo. Excellent.
  • A Microsoft Wedge Mouse. I saw a picture and when I saw the price (just 17€) I got one. It works very well, and is very small. And works with a rechargeable AA battery, which I like as form factor.
  • A eInk display for my Raspberry Pi Zero W.
  • An hourglass. I love hourglasses. You can hear the sand from this one.
  • A cardholder. I already had a wallet by  Bellrow, and they deliver quality.
  • A Luna Display (so far a bit disappointed with the inability to map correctly my keyboard layout between Mac and iPad, so can't type at all, but the stream quality is very good)
  • A bunch of twisty puzzles. I didn't have any 2x2 and I really like it now. Also, magnetic 3x3 are excellent.

  • An excellent compact fountain pen from Kaweco (the liliput)
  • To go with it, I got a 0.7mm pencil from them as well (the classic brass)
  • I got also a 2mm titanium pencil from Kickstarter
  • A knucklebone from AroundSquare. Excellent for manipulating while thinking
  • A new spinning top, the Rain Drop from NWTops (to join last years' Yakima)
  • Several (1, 2, 3, 4) cardistry decks. The Mandala is incredibly gorgeous, the Edge is a design I love (I have the deck as well) and when I saw the trainers I knew I wanted a couple, just because.
And mugs!

Written by Ruben Berenguel